为什么我的IFERROR
函数不起作用?如果vlookup
返回错误2024或#NA,我只希望它返回“ NOT DONKEYS”。
我尝试通过将IFERROR
行中的“ QUANTITY”替换为整个vlookup
函数来将这两行合并在一起,但仍然没有帮助。我只打开一个工作簿,这就是为什么我在代码中未引用任何工作簿的原因。 vlookup
的范围仅是水果列表,并且没有“ DONKEY”作为选项。
Sub FRUITS()
Dim QUANTITY As Variant
'find quantity of fruits
QUANTITY = Application.VLookup("DONKEY", Worksheets("Sheet1").Range("FRUITS"), 2, False)
'return "NO DONKEYS" if QUANTITY returns #NA error
Worksheets("Sheet1").Cells(5, 5).Value = IfError(QUANTITY, "NO DONKEYS")
End Sub
如果IFERROR
遇到错误,我希望vlookup
函数将“ NO DONKEYS”返回到单元格(5,5)。
答案 0 :(得分:1)
使用#NA
或VLOOKUP
可以用另一种方法在If IsError
上捕获If Not IsError
错误。
修改后的代码
Sub FRUITS()
' Dim QUANTITY As Variant
If Not IsError(Application.VLookup("DONKEY", Worksheets("Sheet1").Range("FRUITS"), 2, False)) Then
Worksheets("Sheet1").Cells(5, 5).Value = Application.VLookup("DONKEY", Worksheets("Sheet1").Range("FRUITS"), 2, False) ' find quantity of fruits
Else ' in case VLOOKUP doesn't find a match
Worksheets("Sheet1").Cells(5, 5).Value = "NO DONKEYS" 'return "NO DONKEYS" if QUANTITY returns #NA error
End If
End Sub
注意:您可以在此With Worksheets("Sheet1")
的开头使用If
将其包装起来,也可以只设置一个Worksheet
对象。
答案 1 :(得分:1)
快速一行IF将错误替换为NO DONKEYS
Sub FRUITS()
Dim QUANTITY As Variant
'find quantity of fruits
QUANTITY = Application.VLookup("DONKEY", Worksheets("Sheet1").Range("FRUITS"), 2, False)
'return "NO DONKEYS" if QUANTITY returns #NA error
If IsError(QUANTITY) Then QUANTITY = "NO DONKEYS"
Worksheets("Sheet1").Cells(5, 5).Value = QUANTITY
End Sub