Vlookup Více podmínek pomocí VBA
Zvažte následující tabulku dat:
Standardní funkce Vlookup v Excelu má následující formát:
VLOOKUP („“ Značka ”, B6: G12“, 2, NEPRAVDA)
Který vrátí „Brown“.
Ale co kdybychom chtěli vyhledat 2 nebo více podmínek, například křestní jméno, příjmení a věk ve výše uvedené tabulce? Následující UDF nám to umožňuje:
123456789101112131415161718192021222324252627282930313233343536373839 | Funkce ThreeParameterVlookup (Data_Range As Range, Col As Integer, Parameter1 As Variant, Parameter2 As Variant, Parameter3 As Variant) As Variant"Deklarujte proměnné."Dim CellDim Current_Row As IntegerDim No_Of_Rows_in_Range As IntegerDim No_of_Cols_in_Range As IntegerDim Matching_Row As Integer'nastavit odpověď na N/A ve výchozím nastaveníThreeParameterVlookup = CVErr (xlErrNA)Matching_Row = 0Current_Row = 1No_Of_Rows_in_Range = Data_Range.Rows.CountNo_of_Cols_in_Range = Data_Range.Columns.Count'Zkontrolujte, zda je Col větší než počet sloupců v rozsahu.'If (Col> No_of_Cols_in_Range) ThenThreeParameterVlookup = CVErr (xlErrRef)Konec IfIf (Col <= No_of_Cols_in_Range) ThenDělatIf ((Data_Range.Cells (Current_Row, 1) .Value = Parameter1) And _(Data_Range.Cells (Current_Row, 2) .Value = Parameter2) And _(Data_Range.Cells (Current_Row, 3) .Value = Parameter3)) PakMatching_Row = Current_RowKonec IfCurrent_Row = Current_Row + 1Smyčka do ((Current_Row = No_Of_Rows_in_Range) Nebo (Matching_Row 0))Pokud Matching_Row 0 PotomThreeParameterVlookup = Data_Range.Cells (Matching_Row, Col)Konec IfKonec IfKoncová funkce |
Má následující syntaxi:
ThreeParameterVlookup (Data_Range, Col, Parameter1, Parameter2, Parameter3)
Kde:
• Data_Range je rozsah dat
• Col je celé číslo pro požadovaný sloupec
• Parametr1, parametr2 a parametr3 jsou hodnoty z prvních tří sloupců
Aby:
= ThreeParameterVlookup (B6: G12,6, „Mark“, „Brown“, 7) vrátí „Tolworth“, protože se jedná o shodu na „Mark“, „Brown“ a 7 a odkaz na 6. sloupec
Tato funkce bude fungovat také s (dynamickými) pojmenovanými rozsahy:
= ThreeParameterVlookup (pojmenovaný_range, 6, „Adrian“, „bílý“, 7) vrátí „Chessington“, kde jsme nastavili pojmenovaný rozsah „Named_Range“.
Pokud aplikace Excel nemůže najít shodu, bude ve výchozím nastavení vráceno „N/A“. Ve skutečnosti funkce předpokládá hodnotu N/A na začátku a poté se změní pouze tehdy, když najde přesnou shodu.
Také pokud hodnota Col překročí počet sloupců, dojde k chybě Reference.
Kliknutím sem stáhnete soubor .XLSM pro tento výukový program