Я использую VLOOKUP() чтобы заполнить несколько ячеек, но когда значение не существует в таблице поиска, я хочу, чтобы ячейка показывала исходное содержимое, которое обычно ничто. Однако, когда в ячейке ничего нет, моя формула возвращает 0

Почему моя формула возвращает 0 вместо исходного пустого значения ячейки (как получить исходное значение ячейки)?

=IF(K14<>"",VLOOKUP(K14,Sheet132!$A$2:$E$333,3,FALSE),K14)

Ввод этой формулы представляет ошибку, но нажатие ok показывает 0?

Осторожно, мы нашли одну или несколько циклических ссылок в вашей книге, которые могут привести к неправильным вычислениям ваших формул

РЕДАКТИРОВАТЬ
Я бы даже согласился на то, чтобы текст оператора IF() был "Not In Lookup List", если бы я мог заставить это показать что-то отличное от 0

2 ответа2

3

Именно так ведет себя EXCEL. Вы можете увидеть поведение довольно просто:

  1. убедитесь, что ячейка A1 пуста / пуста.
  2. поместите эту формулу в B1: =A1
  3. обратите внимание, как B1 показывает значение "0".
  4. поместите эту формулу в C1: =IF(ISBLANK(A1),"",A1)

Вы можете использовать аналогичную проверку ISBLANK в исходном запросе.

=IF(K14<>"",VLOOKUP(K14,Sheet132!$A$2:$E$333,3,FALSE),if(isblank(K14,"",K14)))

[редактировать]

Проверка фактического VLOOKUP пуста, однако, означает дублирование VLOOKUP, что вроде отстой. Поэтому я обычно помещаю его в собственную ячейку (скажем, L14), тогда у вас есть:

L14: =VLOOKUP(K14,Sheet132!$A$2:$E$333,3,FALSE)

и тогда ваша функция изменится на:

=if(ISERROR(L14),if(isblank(K14),"",K14),L14)

0

Есть три шага к этой проблеме

  1. используйте ошибку if в случае сбоя vlookup, в противном случае используйте vlookup
  2. иметь вывод iferror K14, если там что-то есть
  3. еще пустое, если ничего не в K14

оригинал

  • = ЕСЛИ (K14 <> "", ВПР (K14, Sheet132!$ A $ 2:$ E $ 333,3, FALSE), K14)

модифицированный

  • =+IFERROR(ВПР (K14, Sheet132!$ A $ 2:$ E $ 333,3, FALSE), ЕСЛИ (К14 = "", "", К14))

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