Vlookupi mitu kriteeriumi koos VBA UDF -iga - VBA koodi näited

Lang L: none (table-of-contents)

Vlookup mitu tingimust VBA abil

Mõelge järgmisele tabelile:

Exceli standardfunktsioon Vlookup on järgmises vormingus:

VLOOKUP (“” Mark ”, B6: G12”, 2, FALSE)

Mis tagastab "pruuni".

Aga mis siis, kui sooviksime leida ülaltoodud tabelis kaks või enam tingimust, nt eesnimi, perekonnanimi ja vanus? Järgmine UDF võimaldab meil seda teha:

123456789101112131415161718192021222324252627282930313233343536373839 Funktsioon Kolm parameetrit'Muutujate deklareerimineDim CellDim Current_Row täisarvunaDim No_Of_Rows_in_Range täisarvunaDim No_of_Cols_in_Range täisarvunaDim Matching_Row täisarvuna"määrake vastus vaikimisi väärtuseks EIThreeParameterVlookup = CVErr (xlErrNA)Sobiv_rida = 0Praegune_rida = 1No_Of_Rows_in_Range = Andmete_vahemik.Ridade arvNo_of_Cols_in_Range = Andmete_vahemik.veerud.arv„Kontrollige, kas veerg on suurem kui vahemiku veergude arvKui (Col> No_of_Cols_in_Range) SiisThreeParameterVlookup = CVErr (xlErrRef)Lõpp KuiKui (veerg <= No_of_Cols_in_Range) SiisTehkeKui ((Data_Range.Cells (Current_Row, 1). Value = Parameter1) Ja _[Data_Range.Cells (Current_Row, 2). Value = Parameter2] And _[Data_Range.Cells (Current_Row, 3). Value = Parameter3]) SiisMatching_Row = Praegune_ridaLõpp KuiPraegune_rida = praegune_rida + 1Tsükkel kuni ((Current_Row = No_Of_Rows_in_Range) Või (Matching_Row 0))Kui vaste_rida 0 siisThreeParameterVlookup = Data_Range.Cells (Matching_Row, Col)Lõpp KuiLõpp KuiLõppfunktsioon

Sellel on järgmine süntaks:

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

Kus:
• Data_Range on andmete vahemik
• Col on vajaliku veeru täisarv
• Parameeter1, Parameeter2 ja Parameeter3 on vastavalt esimese kolme veeru väärtused

Nii et:

= ThreeParameterVlookup (B6: G12,6, "Mark", "Brown", 7) tagastab "Tolworth", kuna see on vaste punktidele "Mark", "Brown" ja 7 ning viide kuuendale veerule

Pange tähele, et see funktsioon töötab ka (dünaamiliste) nimega vahemikega:

= ThreeParameterVlookup (nime_vahemik, 6, ”Adrian”, “Valge”, 7) tagastab “Chessingtoni”, kus oleme seadistanud nimevahemiku “Named_Range”.

Kui Excel ei leia vastet, tagastatakse vaikimisi "N/A". Tegelikult eeldab funktsioon alguses väärtust N/A ja muutub alles siis, kui leiab täpse vaste.

Kui veerg Col ületab veergude arvu, ilmneb ka viide.

Selle õpetuse jaoks .XLSM -faili allalaadimiseks klõpsake siin

wave wave wave wave wave