поиск безотказный ответ - формула Excel я не получаю - PullRequest
1 голос
/ 15 января 2020

Вкл. в этой теме: Найти ссылку на столбец последней ненулевой ячейки в диапазоне НЕПРАВИЛЬНЫХ значений. Я нашел два решения моей проблемы. Но я не мог понять, как они работают. Я уверен, что это задокументировано где-то в Интернете, но не могу найти ключевые слова.

=LOOKUP(2,1/(A1:L1<>0),COLUMN(A1:L1))

Какое ключевое слово следует использовать для поиска документов по результату / механизму логического оператора по массиву A1:L1<>0?

Используется как массив формула (Ctrl + Shift + Enter) Excel успешно вычисляет ячейку с = A1:L1<>0 как = A1<>0. Возвращает логическое значение (True = 1, False = 0). Предполагая, что логическое значение будет позже инвертировано, результирующий массив должен быть ser ie из 1 и #DIV/0, однако LOOKUP() ищет 2, как lookup_value, и, похоже, находит его.

Кроме того, есть тот, который делает то же самое, но я не буду его использовать, потому что не уверен в формулах массива {=MAX(IF(yourrange=0,0,COLUMN(yourrange)))}

1 Ответ

0 голосов
/ 15 января 2020

Этот ответ извлечен отсюда, так что на самом деле все кредиты 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.

Надеюсь, это проливает свет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...