簡體   English   中英

在Excel VBA中連接多個MATCH條件

[英]Concat multiple MATCH criteria in Excel VBA

因此,在Excel中,我們知道可以通過串聯針對多個條件進行測試,如下所示:

MATCH(criteria1&criteria2, Range(), 0)

其中criteria1criteria2 2是2個獨立的條件。

我正在嘗試在Excel VBA中自動執行此操作,如下所示:

WorksheetFunction.Match(criteria1 + "&" + criteria2, Range(), 0)

我的問題是,如何以VBA格式復制與&符相同的標准串聯? 在上面的版本中,Excel一直告訴我它不能使用WorkSheetFunction類的Match函數,這是我將其歸因於上述失敗的串聯嘗試的原因。 任何建議或意見,將不勝感激。

哦,這是指向有關在MATCH()使用多個條件的Microsoft知識庫文章的鏈接: http : //support.microsoft.com/kb/59482

編輯:我意識到我沒有把2個范圍對應於我的2條標准。 問題是我不知道如何連接2個范圍,因為我的格式如下:

Range(Cells(1,columnIndex),Cells(rowCount,columnIndex))

A1:A200相對。 關於如何轉換或以當前形式合並范圍的任何想法?

這有效:

Sub dural()
    crit1 = "find "
    crit2 = "happiness"
    N = Application.WorksheetFunction.Match(crit1 & crit2, Range("A1:A10"), 0)
    MsgBox N
End Sub

與說A3包含:

找到幸福

編輯#1:

在幾列中考慮多個條件的情況。 例如:

演示

我們希望VBA檢索一條黑色小狗的名字

在工作表單元格中沒有VBA的情況下 ,我們可以使用:

=INDEX(D1:D100,SUMPRODUCT(--(A1:A100="dog")*(B1:B100="small")*(C1:C100="black")*ROW(1:100)),1)

取名奧斯卡

我們可以在VBA中使用相同的公式

Sub luxation()
    Dim s As String, s2 As String
    s = "INDEX(D1:D100,SUMPRODUCT(--(A1:A100=""dog"")*(B1:B100=""small"")*(C1:C100=""black"")*ROW(1:100)),1)"
    s2 = Evaluate(s)
    MsgBox s2
End Sub

並不容易映射到VBA實現,但是您可以使用Evaluate作弊:

Sub Tester()

    Dim v1, v2, f

    v1 = "y"
    v2 = 11

    Sheet1.Names.Add Name:="X", RefersTo:=v1
    Sheet1.Names.Add Name:="Y", RefersTo:=v2

    f = "MATCH(X&Y,$A$2:$A$5&$B$2:$B$5, 0)"

    Debug.Print Sheet1.Evaluate(f)

End Sub

或跳過名稱:

Sub Tester2()

    Const F_TEMPL As String = "MATCH(""{V1}""&""{V2}"",$A$2:$A$5&$B$2:$B$5, 0)"
    Dim v1, v2, f

    f = Replace(F_TEMPL, "{V1}", "x")
    f = Replace(f, "{V2}", 12)

    Debug.Print Sheet1.Evaluate(f)

End Sub

您仍然需要將MATCH參數主體作為字符串發送。 “ +”不連接。

WorksheetFunction.Match(criteria1 & "&" & criteria2, Range(), 0)

應該連接兩個值並執行匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM