任何幫助,將不勝感激。這看起來像一個常見的問題,但我無法找到任何vba。這是我最好的拍攝:vba excel匹配多個標準
Dim oppositeRow As Long
.....
oppositeRow = WorksheetFunction.Match(ddate & campaign, "A3:B62", 0)
任何幫助,將不勝感激。這看起來像一個常見的問題,但我無法找到任何vba。這是我最好的拍攝:vba excel匹配多個標準
Dim oppositeRow As Long
.....
oppositeRow = WorksheetFunction.Match(ddate & campaign, "A3:B62", 0)
如果你知道,只會有一個匹配的結果,你可以做以下爲Excel公式:
=SUMPRODUCT(ROW(A2:A5), N("john"=A2:A5), N("smith"=B2:B5))
適用於以下工作:
A B 1 first last 2 bob smith 3 john smith 4 john brown 5 sam brown
這將返回3(因爲約翰史密斯在第三行),您將不得不減去1,以獲取索引到表中,因爲標題行。
這是通過三個矢量相乘:
乘以矢量一起逐元素得到{0,3,0,0},其總和爲3。
這是有點笨拙表達一樣,在VBA一個複雜的公式,所以如果你想在VBA中純粹使用它,我建議你只是用一個計數器做一個循環,然後記錄下你找到的符合你的標準的行的索引。
編輯:這裏是一些VBA代碼:
Dim index as Integer
For index = 1 to 4
If Range("A1").Offset(index).Value = "john" And Range("B1").Offset(index).Value = "smith" Then
Exit For
End If
Next index
我想純粹用vba做。做循環和計數器可能會很複雜,因爲每個值在它們自己的列中出現不止一次,但在同一行中只出現一次。 – mango 2013-03-01 20:18:14
@mango循環實際上很簡單,因爲您可以在每個循環中檢查多個條件。例如: 'Dim index as Integer For index = 1 to 4 If Range(「A1」)。Offset(index).Value =「john」and Range(「B1」)。Offset(index).Value =「smith」Then Exit For End If Next index' – 2013-03-01 20:42:59
我不得不承認,我不認爲這會那麼簡單。讓我給它一個測試。希望這不會有嚴重的性能損失。 – mango 2013-03-01 21:00:26
你可以爲你增添一份列到工作表是用來表示行號與DGET
公式做到這一點,只要。
rowID column1 column2 1 A aa 2 B bb 3 C cc 4 D dd 5 E ee
的公式是那麼:
=DGET(A1:C6;1;E1:F2)
這假定上述數據是在A1:C6
數據的下面塊,其包括搜索標準被放置在E1:F2
column1 column2 C cc
上面列出的DGET
公式的返回值是'3'。
你可以這樣做純粹是在VBA中,如果您的VBA方法放在適當的搜索條件進入細胞E2
和運行DGET
公式F2
之前。
你的實際問題是什麼? – Stewbob 2013-03-01 19:58:21
我想知道從2條標準中獲得匹配位置的方法。我上面的代碼沒有工作。這兩個條件是字符串'ddate'和'campaign' – mango 2013-03-01 20:00:54
'Match'只能評估1個標準,每次只能評估1個列。這聽起來像是一個需要查詢。 – Stewbob 2013-03-01 20:07:11