Если ячейка = #N/A, используйте другой поиск

У меня есть этот макрос Excel VBA, который работает очень хорошо

    Sub PCMSLookupTool()
    Dim LastRow As Long
    With Sheets("Lookup Tools")   '<-set this worksheet reference properly
        LastRow = .Range("A" & Cells.Rows.Count).End(xlUp).Row
        With .Range("J10:J" & LastRow)
          .Formula = "=VLOOKUP(A10, 'PCMS-dump'!A:B, 2, FALSE)"
          .Cells = .Value2
        End With
    End With
End Sub

Но мне нужно сделать так, чтобы, если он не найдет значение (возвращает #N/A), запустить другой vlookup ("=VLOOKUP(A10, 'Импортировано в PCMS'!A:C, 3, FALSE)"

Как мне это сделать?


person JonYork    schedule 29.05.2015    source источник


Ответы (2)


Вам нужен оператор IFERROR:

.Formula = "=IFERROR(VLOOKUP(A10, 'PCMS-dump'!A:B, 2, FALSE),(VLOOKUP(A10, 'Imported in PCMS'!A:C, 3, FALSE)))"
person TMH8885    schedule 29.05.2015

После того, как вы вычислите эту формулу, вам нужно запустить что-то вроде этого:

=if(isna(Sheets("Lookup Tools").Range(J10:J" & LastRow).Value),vlookup(A10,'Imported in PCMS'A:C,3,false),Sheets("Lookup Tools").Range(J10:J" & LastRow).Value)

Я всегда предпочитал использовать другую ячейку, иначе вы дважды запустите свой первый vlookup... т.е.:

=if(isna(vlookup1(...)), vlookup2(...),vlookup1(...))

что не очень эффективно ;)

person Ditto    schedule 29.05.2015