[英]Concat multiple MATCH criteria in Excel VBA
因此,在Excel中,我們知道可以通過串聯針對多個條件進行測試,如下所示:
MATCH(criteria1&criteria2, Range(), 0)
其中criteria1
和criteria2
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.