Vlookup mehrere Kriterien mit VBA UDF - VBA-Codebeispiele

Vlookup mehrerer Bedingungen mit VBA

Betrachten Sie die folgende Datentabelle:

Die Standard-Vlookup-Funktion in Excel hat das folgende Format:

SVERWEIS(“”Mark”, B6:G12”,2,FALSCH)

Was "Brown" zurückgibt.

Wie wäre es jedoch, wenn wir 2 oder mehr Bedingungen wie den Vornamen, den Nachnamen und das Alter in der obigen Tabelle nachschlagen möchten? Das folgende UDF ermöglicht uns dies:

123456789101112131415161718192021222324252627282930313233343536373839 Funktion ThreeParameterVlookup(Data_Range als Bereich, Col als Integer, Parameter1 als Variante, Parameter2 als Variante, Parameter3 als Variante) als Variante'Variablen deklarierenZelle dimmenDim Current_Row als IntegerDim No_Of_Rows_in_Range As IntegerDim No_of_Cols_in_Range As IntegerDim Matching_Row As Integer'Antwort standardmäßig auf N/A setzenThreeParameterVlookup = CVErr(xlErrNA)Matching_Row = 0Current_Row = 1No_Of_Rows_in_Range = Data_Range.Rows.CountNo_of_Cols_in_Range = Data_Range.Columns.Count'Prüfen, ob Col größer als die Anzahl der Spalten im Bereich istWenn (Col > No_of_Cols_in_Range) ThenThreeParameterVlookup = CVErr(xlErrRef)Ende WennWenn (Col <= No_of_Cols_in_Range) ThenTunIf ((Data_Range.Cells(Current_Row, 1).Value = Parameter1) Und _(Data_Range.Cells(Current_Row, 2).Value = Parameter2) Und _(Data_Range.Cells(Current_Row, 3).Value = Parameter3)) DannMatching_Row = Current_RowEnde WennAktuelle_Reihe = Aktuelle_Reihe + 1Schleife bis ((Current_Row = No_Of_Rows_in_Range) oder (Matching_Row 0))Wenn Matching_Row 0 ThenThreeParameterVlookup = Data_Range.Cells(Matching_Row, Col)Ende WennEnde WennEndfunktion

Es hat die folgende Syntax:

ThreeParameterVlookup(Data_Range, Col , Parameter1, Parameter2 , Parameter3 )

Woher:
• Data_Range ist der Bereich der Daten
• Col ist eine ganze Zahl für die erforderliche Spalte
• Parameter1, Parameter2 und Parameter3 sind jeweils die Werte aus den ersten drei Spalten

So dass:

=ThreeParameterVlookup(B6:G12,6“,Mark““,“Brown“,7) gibt „Tolworth“ zurück, da dies eine Übereinstimmung mit „Mark“, „Brown“ und 7 und einem Verweis auf die 6. Spalte ist

Beachten Sie, dass diese Funktion auch mit (dynamischen) benannten Bereichen funktioniert:

=ThreeParameterVlookup(named_range,6“,Adrian“,“,White“,7) gibt „Chessington“ zurück, wo wir den benannten Bereich „Named_Range“ eingerichtet haben.

Wenn Excel keine Übereinstimmung finden kann, wird standardmäßig "N/A" zurückgegeben. Tatsächlich nimmt die Funktion zu Beginn den Wert N/A an und ändert sich dann nur, wenn sie eine genaue Übereinstimmung findet.

Auch wenn der Wert von Col die Anzahl der Spalten überschreitet, tritt ein Referenzfehler auf.

Um die .XLSM-Datei für dieses Tutorial herunterzuladen, klicken Sie hier

wave wave wave wave wave