В Excel мы имеем VLOOKUP
функция, которая ищет значение в столбце в таблице и затем возвращает значение из данного столбца в той таблице, если это находит что-то. Если это не делает, это производит ошибку.
Существует ли функция, которая просто возвращает TRUE или FALSE в зависимости от того, если значение было найдено в столбце или нет?
Вы можете заключить свой VLOOKUP () в IFERROR ()
Изменить: до Excel 2007 используйте = IF (ISERROR () ...)
Вы все еще должны обернуть это в ISERROR, но вы могли бы использовать MATCH()
вместо VLOOKUP()
:
Возвращает относительное положение элемента в массиве, который соответствует заданному значению в заданном порядке. Используйте MATCH вместо одной из функций LOOKUP когда вам нужна позиция элемента в диапазоне, а не сам элемент.
Вот полный пример, предполагающий, что вы ищете слово "key" в диапазоне ячеек:
=IF(ISERROR(MATCH("key",A5:A16,FALSE)),"missing","found")
Параметр FALSE
необходим для точного совпадения, иначе будет искаться ближайшее значение.
Мы всегда использовали
if(iserror(vlookup,"n/a",vlookup))
Excel 2007 ввел IfError, который позволяет делать vlookup и добавлять вывод в случае ошибки, но это не поможет вам с 2003...
Просто используйте СЧЁТЕСЛИ! Намного быстрее писать и вычислять, чем другие предложения.
РЕДАКТИРОВАТЬ:
Допустим, ячейка A1 должна быть равна 1, если значение B1 находится в столбце C, а в противном случае - 2. Как бы вы это сделали?
Я бы сказал, если значение B1 равно найдено в столбце C, то A1 будет положительным, иначе будет 0. Это легко сделать с помощью формулы: = COUNTIF ($ C $ 1: $ C $ 15, B1)
, что означает: подсчитать ячейки в диапазон C1: C15
, которые равны B1
.
Вы можете комбинировать СЧЁТЕСЛИ
с ВПР
и ЕСЛИ
, и это НАМНОГО быстрее, чем использование двух поисков + ISNA. ЕСЛИ (СЧЁТЕСЛИ (..)> 0, ПРОСМОТР (..), «Не найдено»)
Если немного погуглить, вы получите массу примеров .