2

Вот моя формула:

=IFERROR(((VLOOKUP($D$2,UOS!$A$18:$AC$31,5))/30)*$G$2,"")

Поле $D$2 заполняется с помощью =Text(c1,"mmmm")

Когда я использую эту формулу и $D$2 - это январь, февраль, март, май, июнь, июль, сентябрь, октябрь или ноябрь - формула работает. Но когда $D$2 - апрель, август или декабрь, это не работает.

Массив таблицы отформатирован одинаково для месяца.

Ошибка, которую я получаю, если удалить IFERROR, равна #value

Я перепробовал все, что мог придумать - форматирование, прямой ключ месяца в D2 и т.д.

Как я могу решить это?

1 ответ1

3

VLOOKUP(lookup_value, table_array, col_index_num) предполагает, что таблица отсортирована по основным порядкам сортировки (алфавитный, числовой и хронологический).  Так как D2 является текстовым значением (и я предполагаю, что столбец A содержит текстовые строки January , February ,…), алфавитная сортировка вступает в игру.  «Апрель», «Август» и «Декабрь» располагаются перед «Январь» в алфавитном порядке; вот почему они терпят неудачу. Вам нужно изменить формулу на

=IFERROR(((VLOOKUP($D$2, UOS!$A$18:$AC$31, 5, FALSE))/30)*$G$2,"")

искать точное совпадение и не ожидать, что список будет отсортирован по алфавиту.


«Февраль» предшествует «январю» в алфавитном порядке; ты уверен что он работает?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .