为什么在这种情况下我的iferror函数不起作用?

时间:2019-09-09 15:47:40

标签: excel vba

为什么我的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)。

2 个答案:

答案 0 :(得分:1)

使用#NAVLOOKUP可以用另一种方法在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