【问题标题】:Excel Vba Index Match multiple criterias to return Exact matchExcel Vba索引匹配多个条件以返回精确匹配
【发布时间】:2018-04-25 19:43:43
【问题描述】:

我有一个 vba 代码,我将使用它来查找满足确切 2 个标准的值。 在大多数情况下,vba 返回预期值 但是如果我更改标准,或者如果我输入的标准不在我查看的范围内,VBA 会返回一个错误的值。 如果不满足条件,我希望在 H2 中显示文本“CriteriasNotMet”

我的代码是:

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

谁能解释我做错了什么?

谢谢你和上帝

彼得 丹麦

【问题讨论】:

    标签: excel vba indexing match


    【解决方案1】:
    Application.WorksheetFunction.FunctionHere
    

    如果出现错误(例如找不到匹配项),则抛出运行时错误,而

    Application.FunctionHere
    

    将改为返回结果或错误值,您可以使用 IsError() 进行测试

    这对-1 调整没有帮助,因此您不能在一行代码中完成所有这些操作:您需要在将每个返回值传递给Index() 之前测试它们

    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
    

    【讨论】:

      猜你喜欢
      • 2017-04-21
      • 2016-09-24
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      相关资源
      最近更新 更多