2

我正在使用 excel 2007 并创建了一个包含三个 vlookup() 语句的 UDF。该函数应该返回所有三个 vlookup 语句的总和。在大多数情况下,只有两个 vlookup() 语句将返回有效值,第三个语句将导致 NA,因为查找值不包含在查找范围内。

我尝试使用以下方法捕获错误并返回零:

  1. Application.WorksheetFunction.iferror(vlookup(...) ,0)

  2. 使用 If iserror(vlookup()) then ...

但我似乎无法采用任何一种方法来工作。如果我注释掉我知道正在创建错误的 vlookup,一切都会按预期工作。

有谁知道为什么 iserror(0 和 iserror() 似乎不起作用,或者可能是另一种可行的方法。

更新:

以下是三个vlookup函数:

product2 = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(productA, lookuprng, offset, False), 0)

product3 = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(productB, lookuprng, offset, False), 0)

product4 = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(productC, lookuprng, offset, False), 0)
4

3 回答 3

6

您可以使用以下方法捕获错误:

Sub HandleVlookupErrors()
    Dim result As Variant

    result = Application.VLookup(productA, lookuprng, offset, False)
    If IsError(result) Then result = 0

End Sub

有关完整说明,请参阅工作表函数中的错误处理

于 2013-06-18T20:11:09.810 回答
0

您可以考虑编写一个带有错误处理行的 vlookup 函数:

Public Function v_lookup(lookup_value As String, table_array As Range, col_index_num As Integer, range_lookup As Boolean) As String

Dim result As Variant
result = Application.VLookup(lookup_value, table_array, col_index_num, range_lookup)

If IsError(result) Then result = ""
v_lookup = result

End Function
于 2016-06-30T14:36:36.207 回答
-2
Dim Res as Variant
Res = Application.WorksheetFunction.VLookup(Vndr, Range("A:a"), 1, False) 'Where Vndr is some unknown
If Res = Vndr then 
    do xyz
Else
    do 123
endif
于 2014-11-13T23:18:28.390 回答