首页 文章

VBA Excel - IFERROR和VLOOKUP错误

提问于
浏览
1

我正在尝试在excel VBA中创建等效的= IFERROR(VLOOKUP(), - 1)公式,其中函数将在我的数据表中查找文本,如果文本在表中,则返回第5列中的数字如果不是,则为-1 . 我已经在excel中测试了上面的公式,它给了我想要的结果问题是当我在VBA中编码时我一直得到#VALUE!如果文本不在表中,则会出错 . 如果文本在表中,代码将生成所需的数字 . 我的代码如下:

Function CCC(A As Variant)
Dim B As Variant
B = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(A, Sheets("DAP").Range("$B$4:$X$7"), 5, False), -1)
CCC = B
End Function

考虑到这一点,有没有办法修复代码,以便IFERROR(VLOOKUP)工作,如果不是什么是在VBA中实现相同结果的最佳替代方案?

1 回答

  • 0

    如果找不到值,则使用 Application.WorksheetFunction.VLookup( 将中断代码 .

    将其包装在vba错误控制中 .

    Function CCC(A As Range)
    Dim B As Variant
    B = -1
    On Error Resume Next
    B = Application.WorksheetFunction.VLookup(A.Value, Sheets("DAP").Range("$B$4:$X$7"), 5, False)
    On error goto 0
    CCC = B
    
    End Function
    

    另一种方法是通过删除 .WorksheetFormula 来后期绑定,然后测试结果 .

    Function CCC(A As Range)
    Dim B As Variant
    B = Application.VLookup(A.Value, Sheets("DAP").Range("$B$4:$X$7"), 5, False)
    If IsError(B) Then
        CCC = -1
    Else
        CCC = B
    End If
    End Function
    

相关问题