Excel Vba Index匹配多个标准以返回完全匹配

时间:2018-04-25 19:43:43

标签: excel vba indexing match

我有一个vba代码,我将用它来寻找符合2个标准的值。 在大多数情况下,vba返回预期值 但如果我更改标准,或者如果我输入的标准不在我查看的范围内,则VBA返回错误的值。 如果不符合标准,我宁愿有一个文本" CriteriasNotMet"显示为H2

的结果

我的代码是:

Sub IndexMatch()
myName = [F2]
mySubject = [G2]
mark = Application.WorksheetFunction.Index([StMark], _
Application.WorksheetFunction.Match(myName, ([StName]), 0) + _
Application.WorksheetFunction.Match(mySubject, ([StSubject]), 0) - 1)

[H2] = mark

End Sub

任何人都可以解释我做错了什么吗?

谢谢你和上帝之后

彼得 丹麦

1 个答案:

答案 0 :(得分:0)

Application.WorksheetFunction.FunctionHere
如果出现错误(例如找不到匹配项),

会抛出运行时错误,而

Application.FunctionHere

将返回结果或错误值,您可以使用IsError()

进行测试

这对-1调整没有帮助,所以你不能在一行代码中完成所有这些:你需要先测试每个返回值,然后再将它们传递给Index() < / p>

Sub IndexMatch()

    Dim subIndx, nmIndx, mark

    subIndx = Application.Match([G2], [StSubject], 0)
    nmIndx = Application.Match([F2], [StName], 0)

    If Not IsError(subIndx) And Not IsError(nmIndx) Then
        mark = Application.Index([StMark], nmIndx, subIndx - 1)
    Else
        mark = "No Match"
    End If

    [H2] = mark

End Sub