Подавить # N/A, возвращенный Google Таблицами vlookup
У меня есть Google Sheet (пример) с базовым vlookup для создания суммируемого столбца. Он возвращает "# N/A" для каждого ключа поиска, который не найден, и добавляет к этим ячейкам следующую ошибку:
Ошибка Не найдено значение "[email protected]" в оценке VLOOKUP.
После долгих поисков единственное решение, которое я нашел, заключалось в том, чтобы обернуть vlookup в IF (ISNA()), приведенный в разделе Как связать различные электронные таблицы Google с помощью IMPORTRANGE, содержащих формулы VLOOKUP, без возврата # N/A? , Это работает, но, похоже, мне не следует этого делать. Есть ли другой способ?
Ответы
Ответ 1
Обновление 2019-03-01: Лучшее решение теперь - =IFNA(VLOOKUP(…), 0)
. Смотрите этот другой ответ.
Вы можете использовать следующую формулу. Он заменит значения #N/A
, возвращенные VLOOKUP(…)
, на 0
.
=SUMIF(VLOOKUP(…),"<>#N/A")
Как это работает: Здесь используется SUMIF()
только с одним значением для суммирования. В результате получается одно значение - если оно не равно #N/A
, в соответствии с условием. Если значение равно #N/A
, сумма равна нулю. Вот как работает SUMIF()
: если никакие значения не соответствуют условиям, результатом будет 0
, а не NULL
, а не #N/A
.
Преимущества:
По сравнению с решением =IF(ISNA(VLOOKUP(…)),"",VLOOKUP(…))
, на которое ссылается вопрос, это решение содержит часть VLOOKUP(…)
только один раз. Это делает формулу короче и проще и позволяет избежать ошибок, возникающих при редактировании только одной из двух частей VLOOKUP(…)
.
По сравнению с решением =IFERROR(VLOOKUP(…))
из другого ответа ошибки не подавляются, так как это затруднит их обнаружение и отладку. Только значения #N/A
подавляются.
Ответ 2
Простейший способ подавить сообщения об ошибках - любой тип - использовать оболочку iferror
:
=iferror(vlookup(A1,Lookup!A:B,2,FALSE))
Я не думаю, что это может быть проще. По дизайну vlookup
не должен просто возвращать пустой, если ключ не был найден: это было бы неотличимо от ситуации, когда ключ был найден, но соответствующая запись во втором столбце была пустой. Должна быть выбрана некоторая ошибка, а затем - пользователю таблицы, как ее обрабатывать.
Ответ 3
=IFNA(VLOOKUP(...), "")
Не уверен, что это недавно изменилось, но реализация IFNA
поддерживает единый список VLOOKUP
. То есть вам не нужно оборачивать это в другой IF
.
Преимущество заключается в том, что вы можете выбрать ""
, 0
, NULL
и т.д. В качестве значения, которое будет отображаться при сбое.