Vlookup Več pogojev z uporabo VBA
Upoštevajte naslednjo tabelo podatkov:
Standardna funkcija Vlookup v Excelu ima naslednjo obliko:
VLOOKUP ("" Oznaka ", B6: G12", 2, FALSE)
Ki bo vrnil “rjavo”.
Kaj pa, če bi želeli poiskati dva ali več pogojev, na primer ime, priimek in starost v zgornji tabeli? Naslednji UDF nam to omogoča:
123456789101112131415161718192021222324252627282930313233343536373839 | Funkcija ThreeParameterVlookup (Data_Range As Range, Col As Integer, Parameter1 As Variant, Parameter2 As Variant, Parameter3 as Variant) Kot varianta"Razglasite spremenljivkeZatemnjena celicaZatemni Current_Row kot celo številoZatemni No_Of_Rows_in_Range As IntegerZatemni No_of_Cols_in_Range As IntegerDim Matching_Row As Integer'privzeto nastavite odgovor na N/AThreeParameterVlookup = CVErr (xlErrNA)Vrsta ujemanja = 0Trenutna_vrstica = 1No_Of_Rows_in_Range = Podatki_Range.Rows.CountNo_of_Cols_in_Range = Podatki_Range.Columns.Count'Preverite, ali je Col večji od števila stolpcev v razponuČe (Col> No_of_Cols_in_Range) PotemThreeParameterVlookup = CVErr (xlErrRef)Konec ČeČe (Col <= No_of_Cols_in_Range) PotemNarediČe ((Podatkovni obseg. Celice (Trenutni_red, 1). Vrednost = parameter 1) In _(Podatkovni obseg. Celice (Trenutni_red, 2). Vrednost = parameter 2) In _(Podatkovni obseg. Celice (Trenutni_red, 3). Vrednost = parameter 3)) NatoMatching_Row = Trenutna_vrstKonec ČeCurrent_Row = Trenutni_Row + 1Zanka do ((Current_Row = No_Of_Rows_in_Range) Ali (Matching_Row 0))Če Matching_Row 0 PotemThreeParameterVlookup = Data_Range.Cells (Matching_Row, Col)Konec ČeKonec ČeKončana funkcija |
Ima naslednjo sintakso:
ThreeParameterVlookup (Podatkovni obseg, stolpec, parameter 1, parameter 2, parameter 3)
Kje:
• Data_Range je obseg podatkov
• Col je celo število za zahtevani stolpec
• Parameter1, Parameter2 in Parameter3 so vrednosti iz prvih treh stolpcev
Tako da:
= ThreeParameterVlookup (B6: G12,6, "Mark", "Brown", 7) vrne "Tolworth", saj se to ujema z "Mark", "Brown" in 7 ter sklicevanjem na 6. stolpec
Upoštevajte, da bo ta funkcija delovala tudi z (dinamičnimi) imenovanimi obsegi:
= ThreeParameterVlookup (named_range, 6, "Adrian", "White", 7) vrne "Chessington", kjer smo nastavili imenovano območje "Named_Range".
Če Excel ne more najti ujemanja, se privzeto vrne »N/A«. Dejansko funkcija prevzame vrednost N/A na začetku in se nato spremeni le, ko najde natančno ujemanje.
Tudi če vrednost Col presega število stolpcev, se pojavi referenčna napaka.
Če želite prenesti datoteko .XLSM za to vadnico, kliknite tukaj