如果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(...))
这不是非常有效;)