„Vlookup“ keli kriterijai su VBA UDF - VBA kodo pavyzdžiai

„Vlookup“ kelios sąlygos naudojant VBA

Apsvarstykite šią duomenų lentelę:

Standartinė „Vlookup“ funkcija „Excel“ yra tokio formato:

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

Kuris grįš „Brown“.

Tačiau ką daryti, jei aukščiau esančioje lentelėje norėtume rasti 2 ar daugiau sąlygų, pvz., Vardą, pavardę ir amžių? Šis UDF leidžia mums tai padaryti:

123456789101112131415161718192021222324252627282930313233343536373839 Funkcija Trys parametras„Skelbti kintamuosius„Dim Cell“Dim Dabartinė_eilė kaip sveikasis skaičiusDim No_Of_Rows_in_Range As IntegerDim No_of_Cols_in_Range As IntegerRibota atitikties_eilė kaip sveikasis skaičius'pagal numatytuosius nustatymus nustatykite atsakymą į N/AThreeParameterVlookup = CVErr (xlErrNA)Atitinkanti_eilė = 0Dabartinė_eilė = 1No_Of_Rows_in_Range = Data_Range.Rows.CountNo_of_Cols_in_Range = Data_Range.Columns.Count„Patikrinkite, ar stulpelis yra didesnis už diapazono stulpelių skaičiųJei (Col> No_of_Cols_in_Range) TadaThreeParameterVlookup = CVErr (xlErrRef)Pabaiga JeiJei (stulpelis <= No_of_Cols_in_Range) TadaDarykJei ((Data_Range.Cells (Current_Row, 1). Value = Parameter1) Ir _[Data_Range.Cells (Current_Row, 2). Value = Parameter2] Ir _[Data_Range.Cells (Current_Row, 3). Value = Parameter3]) TadaMatching_Row = Dabartinė_eilėPabaiga JeiCurrent_Row = Current_Row + 1Ciklas iki ((Current_Row = No_Of_Rows_in_Range) arba (Matching_Row 0))Jei atitinka 0 eilutė, tadaThreeParameterVlookup = Data_Range.Cells (Matching_Row, Col)Pabaiga JeiPabaiga JeiPabaigos funkcija

Ji turi tokią sintaksę:

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

Kur:
• Data_Range yra duomenų diapazonas
• Col yra reikiamo stulpelio sveikasis skaičius
• Parametras1, Parametras2 ir Parametras3 yra atitinkamai pirmųjų trijų stulpelių vertės

Taigi, kad:

= „ThreeParameterVlookup“ (B6: G12,6, „Mark“, „Brown“, 7) grąžins „Tolworth“, nes tai atitinka „Mark“, „Brown“ ir 7 ir nuoroda į 6 stulpelį

Atminkite, kad ši funkcija taip pat veiks su (dinaminiais) pavadintais diapazonais:

= „ThreeParameterVlookup“ (pavadintas_diapazonas, 6, „Adrianas“, „Baltas“, 7) grąžins „Chessington“, kur nustatėme pavadintą diapazoną „Named_Range“.

Jei „Excel“ negali rasti atitikties, „N/A“ grąžinama pagal numatytuosius nustatymus. Tiesą sakant, funkcija iš pradžių prisiima N/A vertę ir tada keičiasi tik radusi tikslią atitiktį.

Taip pat, jei Col vertė viršija stulpelių skaičių, atsiranda nuorodos klaida.

Norėdami atsisiųsti .XLSM failą šiai pamokai, spustelėkite čia

wave wave wave wave wave