Этот ответ извлечен отсюда, так что на самом деле все кредиты go его автору:
Формула Excel для получения ПОСЛЕДНЕГО ненулевого значения в заголовке строки и возвращаемого столбца
Это работает, потому что часть 1/(E2:CO2<>0)
возвращает массив из 1 с, где ячейка не равна нулю ...... или #DIV/0!
ошибок, где она есть. LOOKUP затем не найдет 2 в этом массиве, поэтому он совпадает с последним 1, то есть последним столбцом с ненулевым значением ..... и затем возвращает соответствующее значение из строки заголовка .
Я публикую его, потому что вопрос может быть помечен как дубликат, потому что ответ не на SO.
ОБНОВЛЕНИЕ: Я хочу добавить некоторая дополнительная информация, основанная на поддержке Office:
Функция LOOKUP
И использование в качестве примера этого вопроса на SO
Согласно этому источнику:
Если функция LOOKUP не может найти lookup_value, функция соответствует наибольшему значению в lookup_vector, которое меньше или равно lookup_value.
Когда вы делаете, часть 1/(E2:CO2<>0)
возвращает массив (lookup_vector) из 1 с, где ячейка не равна нулю ...... или #DIV/0!
, поэтому мы получаем массив, подобный этому:
#DIV/0!;#DIV/0!;#DIV/0!;1;1;1;1;1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!
Таким образом, LOOKUP проверяет каждое отдельное значение в массиве слева направо. Если ничего не найдено, оно займет наибольшее значение, равное 1.
Но поскольку 1 присутствует во многих позициях внутри массива, а последний проверенный находится на 8-й позиции, то формула затем переходит в массив созданный COLUMN(A1:L1)
(result_vector), который выглядит примерно так:
1;2;3;4;5;6;7;8;9;10;11;12
Он проверяет значение на 8-й позиции, которая содержит значение 8, а затем формула возвращает число 8.
Надеюсь, это проливает свет.