VBA (Excel): Znajdź na podstawie wielu kryteriów wyszukiwania bez pętli

Mam duży arkusz danych, który chcę przeszukać w VBA na podstawie 3 zestawów kryteriów. Można założyć, że każdy wpis wiersza jest unikalny. Format samego arkusza / danych nie może zostać zmieniony ze względu na wymagania. (Widziałem kilka postów dotyczących pytań pokrewnych, ale nie znalazłem jeszcze odpowiedniego rozwiązania.)

Na początku użyłem klasycznego VBAodnaleźć metoda w pętli:

Set foundItem = itemRange.Find(What:=itemName, Lookin:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows)
If Not foundItem Is Nothing Then
    firstMatchAddr = foundItem.Address
    Do
        ' *Check the other fields in this row for a match and exit if found*
        Set foundItem = itemRange.FindNext(foundItem)
    Loop While foundItem.Address <> firstMatchAddr  And Not foundItem Is Nothing
End If

Ale ponieważ trzeba to nazywać wiele razy na dużych zestawach danych, szybkość tego nie była dobra.

Zrobiłem kilka poszukiwań i odkryłem, że mogę użyćmecz metoda zindeks. Tak więc bezskutecznie próbowałem wielu odmian takich jak:

result = Evaluate("=MATCH(1, (""" & criteria1Name & """=A2:A" & lastRow & ")*(""" & criteria2Name & """=B2:B" & lastRow & ")*(""" & criteria3Name & """=C2:C" & lastRow & "), 0)")

I

result = Application.WorksheetFunction.Index(resultRange, Application.WorksheetFunction.Match((criteria1Name = criteria1Range)*(criteria2Name = criteria2Range)*(criteria3Name = criteria3Range))

I

result = Application.WorksheetFunction.Index(resultRange, Application.WorksheetFunction.Match((criteria1Range=criteria1Name )*(criteria2Range=criteria2Name )*(criteria3Range=criteria3Name ))

Potem spróbowałem użyćAutoFilter sortować:

.Range(.Cells(1,1), .Cells(lastRow, lastCol)).AutoFilter Field:=1, Criteria1:="=" & criteria1Name
.Range(.Cells(1,1), .Cells(lastRow, lastCol)).AutoFilter Field:=2, Criteria1:="=" & criteria2Name
.Range(.Cells(1,1), .Cells(lastRow, lastCol)).AutoFilter Field:=3, Criteria1:="=" & criteria3Name

Ale ponieważ jedna z kolumn sortujących zawiera daty, miałem problemy z poprawnym działaniem AutoFiltera.

Moje pytanie brzmi,jak mogę przeszukiwać kolumny w Excel VBA na podstawie wielu kryteriów,bez zapętlania, zwracając numer wiersza lub wartość w komórce tego wiersza, który mnie interesuje?

questionAnswers(2)

yourAnswerToTheQuestion