如果cell =#N / A,则使用另一个vlookup

我有这个Excel VBAmacros运行得非常好

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 

但是,如果它没有find一个值(返回#N / A)来运行另一个vlookup(“= VLOOKUP(A10,'导入PCMS!A:C,3,FALSE)”

我将如何去做这件事?

你需要的是一个IFERROR语句:

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

在你计算出这个公式之后,你需要运行如下的东西:

 =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(...)) 

这不是非常有效;)