Vba: jak używać dopasowania indeksu z wieloma kryteriami


Aby wykonać DOPASOWANIE INDEKSU z wieloma kryteriami w VBA, możesz użyć następującej podstawowej składni:

 SubIndexMatchMultiple ()
    Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
    WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
    WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub

Ten konkretny przykład szuka wartości w komórce F1 w zakresie A2:A10 i wartości w komórce F2 w zakresie B2:B10 i zwraca odpowiednią wartość w zakresie C2:C10 w komórce F3 .

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Wykonaj DOPASOWANIE INDEKSU z wieloma kryteriami przy użyciu języka VBA

Załóżmy, że mamy w Excelu następujący zbiór danych zawierający informacje o koszykarzach:

Załóżmy, że chcemy znaleźć gracza, który pasuje do nazwy drużyny w komórce F1 i pozycji w komórce F2 i zwrócić tę nazwę w komórce F3 .

W tym celu możemy utworzyć następujące makro:

 SubIndexMatchMultiple ()
    Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
    WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
    WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub

Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:

Makro wyszukuje „Spurs” w kolumnie Zespół i „Napastnik” w kolumnie Pozycja i poprawnie zwraca nazwę „Eric” w komórce F3 .

Jeśli zmienimy wartości w komórkach F1 i F2 i uruchomimy makro ponownie, będzie ono mogło znaleźć nazwę gracza na podstawie nowych wartości.

Załóżmy na przykład, że zmieniamy nazwę zespołu na „Mavs”, a pozycję na „Centrum” i ponownie uruchamiamy makro:

Makro wyszukuje „Mavs” w kolumnie Zespół i „Centrum” w kolumnie Pozycja i poprawnie zwraca nazwę „Chad” w komórce F3 .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:

VBA: Jak korzystać z dopasowywania indeksów
VBA: jak sprawdzić, czy ciąg zawiera inny ciąg
VBA: Jak policzyć liczbę wierszy w zakresie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *