„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