Vlookup više kriterija s VBA UDF - Primjeri VBA koda

Vlookup Više uvjeta pomoću VBA

Razmotrite sljedeću tablicu podataka:

Standardna funkcija Vlookup u programu Excel ima sljedeći format:

VLOOKUP ("" Oznaka ", B6: G12", 2, FALSE)

Koji će vratiti "Brown".

Međutim, što ako bismo htjeli pogledati 2 ili više uvjeta, npr. Ime, prezime i dob u gornjoj tablici? Sljedeći UDF nam to omogućuje:

123456789101112131415161718192021222324252627282930313233343536373839 Funkcija ThreeParameterVlookup (Data_Range As Range, Col As Integer, Parameter1 as Variant, Parameter2 as Variant, Parameter3 as Variant) Kao varijanta'Deklarirajte varijableZatamnjena ćelijaZatamni Current_Row kao cijeli brojDim No_Of_Rows_in_Range As IntegerDim No_of_Cols_in_Range As IntegerDim Matching_Row As Integer'zadano postavite odgovor na N/AThreeParameterVlookup = CVErr (xlErrNA)Podudarni_red = 0Trenutni_red = 1No_Of_Rows_in_Range = Podatkovni_Range.Rows.CountNo_Cols_in_Range = Podatci_Range.Columns.Count'Provjerite je li Col veći od broja stupaca u rasponuAko (Col> No_of_Cols_in_Range) TadaThreeParameterVlookup = CVErr (xlErrRef)Završi akoAko (Col <= No_of_Cols_in_Range) TadaČiniAko ((Data_Range.Cells (Current_Row, 1) .Value = Parameter1) I _(Područje_Data.Cells (Trenutni_red, 2). Vrijednost = Parametar2) I _(Podatkovni raspon. Ćelije (Trenutni_red, 3). Vrijednost = Parametar3)) ZatimPodudarni_red = Trenutni_redZavrši akoTrenutni_red = Trenutni_red + 1Petlja do ((Trenutni_red = Nema_Of_Rows_in_Range) Ili (Matching_Row 0))Ako Matching_Row 0 TadaThreeParameterVlookup = Data_Range.Cells (Matching_Row, Col)Završi akoZavrši akoZavršna funkcija

Ima sljedeću sintaksu:

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

Gdje:
• Data_Range je raspon podataka
• Col je cijeli broj za traženi stupac
• Parametar1, Parameter2 i Parameter3 su vrijednosti iz prva tri stupca

Tako da:

= ThreeParameterVlookup (B6: G12,6, "Mark", "Brown", 7) vratit će "Tolworth" jer se ovo podudara na "Mark", "Brown" i 7 i upućivanje na 6. stupac

Imajte na umu da će ova funkcija raditi i s (dinamičkim) imenovanim rasponima:

= ThreeParameterVlookup (named_range, 6, "Adrian", "White", 7) vratit će "Chessington" gdje smo postavili imenovani raspon "Named_Range".

Ako Excel ne može pronaći podudarnost, prema zadanim postavkama vraća se "N/A". Zapravo, funkcija pretpostavlja vrijednost N/A na početku, a zatim se mijenja samo kada pronađe točno podudaranje.

Također, ako vrijednost Col premašuje broj stupaca, dolazi do greške reference.

Kliknite ovdje da biste preuzeli .XLSM datoteku za ovaj vodič

wave wave wave wave wave