Удалить N / A при использовании VLOOKUP

#excel #vba #excel-formula

#excel #vba #excel-формула

Вопрос:

Я пытаюсь перенести значения с листа 2 на лист 1, используя формулу VLOOKUP (в VBA после использования формулы я копирую вставку, чтобы просто увидеть значение). Но когда ячейки с листа 2 пусты, я получаю «# N / A», который мне не нужен. Что я могу сделать, чтобы ячейка была пустой, если в ней нет никакого значения, например, заменить #N / A на nothing.

Я пытался использовать формулу IFERROR, но я получаю 0 вместо ничего.

 comm.Range(.Cells(2, "C"), .Cells(lr, "C")).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2],Sheet2!C[-2]:C[22],3,0),"""")"
  

Комментарии:

1. У меня все работает нормально. Вы получите, 0 если в ячейке есть 0 , иначе вы получите «пустое значение»

2. Что произойдет, если вы действительно попробуете эту формулу непосредственно в ячейке?

3. @Zac if работает, используя его непосредственно в ячейке, но я не могу. Клиент использует пользовательскую форму для заполнения пустых данных после VLOOKUP, вот почему я использовал ее в VBA, потому что после того, как я скопирую, вставьте ее, чтобы удалить формулу

Ответ №1:

  • Вы могли бы использовать =IFNA вместо =IFERROR, потому что код в случае ошибки генерирует ошибку #N / A.
  • Наконец, в вашей формуле после номера столбца, который вы хотите вернуть (в вашем случае номер столбца 3), вы используете число 0 вместо TRUE или FALSE.

Приведенный ниже код не является ответом, а примером формулы.

Пример кода:

 =IFNA(VLOOKUP(A2,$D$1:$E$2,2,FALSE),"") 'In excel

.FormulaR1C1 = "=VLOOKUP(RC[-1],R1C4:R2C5,2,FALSE)" 'In VBA
  

Комментарии:

1. В Excel значения TRUE и FALSE обрабатываются как 1 и 0 соответственно. Я использую 1 и 0 для части VLOOKUP / HLOOKUP true false все время без проблем.