Вложенный IFERROR, VLOOKUP, IF VBA code + copy down - PullRequest
2 голосов
/ 25 октября 2019

Я пытаюсь создать код VBA для выполнения этой формулы: =IFERROR(Vlookup(C3,PasteValues!$A:$F,6,0),IF(Q2="","",Q2)) Я также хочу скопировать эту формулу вниз во весь столбец.

Dim LastRow As Long
Range("P:P").Copy Range("Q:Q")
LastRow = Range("P2:P" & Rows.Count).End(xlUp).Row
Range("P2:P" & LastRow).Formula = Application.WorksheetFunction.IFERROR(VLOOKUP(Range("C2"),Range("TableEmail!A:F"),6,FALSE),IF(Q2="","",C2))

Когда я пытался это сделать, формула не копировала / возвращала синтаксическую ошибку.

1 Ответ

1 голос
/ 25 октября 2019

Если вы хотите заполнить формулу, это должна быть строка. Один использует Application.WorksheetFunction только когда хочет использовать эту функцию для возврата значения в vba. Если требуется поместить формулу в ячейку или диапазон, используя .Formula, тогда формула представляет собой строку в формате US-EN с любым " внутри строки, удвоенной:

With ActiveSheet
    Dim LastRow As Long
    .Range("P:P").Copy .Range("Q:Q")
    LastRow = .Range("P" & Rows.Count).End(xlUp).Row
    .Range("P2:P" & LastRow).Formula = "=IFERROR(VLOOKUP(C2,TableEmail!A:F,6,FALSE),IF(Q2="""","""",C2))"
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...