#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 все время без проблем.