3

Я пытаюсь использовать Excel (2013), чтобы узнать, появляется ли значение 1 в заданном наборе (с помощью функции CHOOSE() , а затем, если это так, печатать значение в ячейке справа от него с помощью VLOOKUP() функция. Почему эта формула дает два разных результата в разных ячейках, если сама формула идентична?

=IF(CHOOSE(1, $A$4:$A$17) = 1, VLOOKUP(1, $A$4:$C$17, 2, FALSE), "?")

Ячейки V4-V7 на моем листе имеют одинаковую формулу (напечатанную выше), но они возвращают разные значения. Возвращаемое значение V4 - это тип, который мне нужен (т. Е. Значение ячейки B4, которое является числом), а остальные возвращают "?" Почему это и как я могу это исправить? Заранее благодарю за любую помощь.

2 ответа2

6

Допустим, есть эти значения в диапазоне A4:A6:

1
2
3

Когда у вас есть CHOOSE(1, $A$4:$A$17) .

Массивы в Excel будут оценивать соответствующую строку или столбец (в зависимости от ситуации), если формула оценена нормально. Если формула находится в строке 4, то CHOOSE(1, $A$4:$A$17) получит CHOOSE(1, $A$4) . В строке 5 он получит CHOOSE(1, $A$5) . Это потому, что CHOOSE обычно не принимает значения массива.

Если вы хотите вывести список из диапазона $A$4:$A$17 , вам нужно будет ввести CHOOSE как формулу массива, и, поскольку она находится в большей формуле, это также применимо. Вы увидите, что это работает так, как вы ожидаете, если вы используете Ctrl+Shift+Enter после вставки формулы и вместо нажатия только Enter .

5

Мне непонятно, почему вы используете здесь функцию CHOOSE , я бы посоветовал вам чаще проверять с помощью COUNTIF , т.е.

=IF(COUNTIF($A$4:$A$17,1)>0,VLOOKUP(1,$A$4:$C$17,2,FALSE),"?")

.... но в Excel 2007 (или новее), возможно, проще использовать функцию IFERROR следующим образом:

=IFERROR(VLOOKUP(1,$A$4:$C$17,2,FALSE),"?")

Обе эти формулы будут возвращать результат VLOOKUP, если 1 появляется в A4:A17 .... иначе ?

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