Vlookup več meril z VBA UDF - primeri kode VBA

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

wave wave wave wave wave