Vlookup Wiele kryteriów z VBA UDF - Przykłady kodu VBA

Vlookup wiele warunków za pomocą VBA

Rozważ poniższą tabelę danych:

Standardowa funkcja Vlookup w programie Excel ma następujący format:

WYSZUKAJ.PIONOWO(""Znak", B6:G12",2,FAŁSZ)

Co zwróci „Brown”.

Co jednak, gdybyśmy chcieli sprawdzić 2 lub więcej warunków, np. imię, nazwisko i wiek w powyższej tabeli? Umożliwia nam to następujący UDF:

123456789101112131415161718192021222324252627282930313233343536373839 Funkcja ThreeParameterVlookup (zakres_danych jako zakres, kolumna jako liczba całkowita, parametr1 jako wariant, parametr2 jako wariant, parametr3 jako wariant) jako wariant„Zadeklaruj zmienne”Przyciemnij komórkęDim Current_Row jako liczba całkowitaDim No_Of_Rows_in_Range jako liczba całkowitaDim No_of_Cols_in_Range jako liczba całkowitaDim Matching_Row jako liczba całkowita„domyślnie ustaw odpowiedź na nie dotyczy”Przeglądanie trzech parametrów = CVErr(xlErrNA)Matching_Row = 0Bieżący_wiersz = 1No_Of_Rows_in_Range = Data_Range.Rows.CountLiczba_kolumn_w_zakresie = Zakres_danych.Liczba kolumn'Sprawdź, czy Col jest większe niż liczba kolumn w zakresieJeśli (Kol > Liczba_kolumn_w_zakresie) WtedyPrzeglądanie trzech parametrów = CVErr(xlErrRef)Zakończ, jeśliJeśli (kolumna <= liczba_kolumn_w_zakresie) WtedyRobićIf ((Data_Range.Cells(Current_Row, 1).Value = Parameter1) And _(Data_Range.Cells(Current_Row, 2).Wartość = Parametr2) i _(Data_Range.Cells(Current_Row, 3).Value = Parameter3)) NastępnieDopasowany_wiersz = Bieżący_wierszZakończ, jeśliBieżący_wiersz = Bieżący_wiersz + 1Pętla do ((Current_Row = No_Of_Rows_in_Range) lub (Matching_Row 0))Jeśli pasujący_wiersz 0 toThreeParameterVlookup = Data_Range.Cells(Pasujący_wiersz, Col)Zakończ, jeśliZakończ, jeśliKoniec funkcji

Ma następującą składnię:

ThreeParameterVlookup (zakres_danych, kolumna , parametr1, parametr2 , parametr3 )

Gdzie:
• Data_Range to zakres danych
• Col jest liczbą całkowitą dla wymaganej kolumny
• Parametr1, Parametr2 i Parametr3 to odpowiednio wartości z pierwszych trzech kolumn

Aby:

=ThreeParameterVlookup(B6:G12,6”,Mark”,”Brown”,7) zwróci „Tolworth”, ponieważ jest to dopasowanie dla „Mark”, „Brown” i 7 oraz odniesienie do szóstej kolumny

Zauważ, że ta funkcja będzie również działać z (dynamicznymi) nazwanymi zakresami:

=ThreeParameterVlookup(nazwany_zakres,6”,Adrian”,„Biały”,7) zwróci „Chessington”, gdzie ustawiliśmy nazwany zakres „Nazwany_zakres”.

Jeśli program Excel nie może zlokalizować dopasowania, domyślnie zwracane jest „Nie dotyczy”. W rzeczywistości funkcja na początku przyjmuje wartość N/A, a następnie zmienia się tylko wtedy, gdy znajdzie dokładne dopasowanie.

Również jeśli wartość Col przekracza liczbę kolumn, pojawia się błąd odniesienia.

Aby pobrać plik .XLSM do tego samouczka, kliknij tutaj

wave wave wave wave wave