Vlookup több feltétel VBA UDF -el - VBA kódpéldák

Vlookup több feltétel a VBA használatával

Tekintsük a következő adattáblát:

Az Excel szabványos Vlookup funkciója a következő formátumú:

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

Ami visszatér „Barna”.

Mi van azonban akkor, ha két vagy több feltételt szeretnénk megkeresni, például a fenti táblázatban szereplő keresztnevet, vezetéknevet és életkort? A következő UDF lehetővé teszi számunkra ezt:

123456789101112131415161718192021222324252627282930313233343536373839 Három funkció'Változók deklarálásaDim CellHalvány Aktuális_sor egészkéntDim No_Of_Rows_in_Range Mint IntegerDim No_of_Cols_in_Range Mint IntegerHalvány egyező_sor egész számként'alapértelmezés szerint állítsa a választ N/A értékreThreeParameterVlookup = CVErr (xlErrNA)Egyező_sor = 0Aktuális_sor = 1No_Of_Rows_in_Range = Data_Range.Rows.CountNo_of_Cols_in_Range = Data_Range.Columns.Count'Ellenőrizze, hogy a Col nagyobb -e, mint a tartomány oszlopainak számaHa (Col> No_of_Cols_in_Range) AkkorThreeParameterVlookup = CVErr (xlErrRef)Vége HaHa (Col <= No_of_Cols_in_Range) AkkorTeddHa ((Data_Range.Cells (Current_Row, 1). Value = Parameter1) És _(Data_Range.Cells (Current_Row, 2). Value = Parameter2) És _(Data_Range.Cells (Current_Row, 3). Value = Parameter3)) EzutánMatching_Row = Aktuális_sorVége HaAktuális_sor = Aktuális_sor + 1Loop ciklusig ((Current_Row = No_Of_Rows_in_Range) Vagy (Matching_Row 0))Ha egyező_sor 0 akkorThreeParameterVlookup = Data_Range.Cells (Egyező_sor, oszlop)Vége HaVége HaVége funkció

A következő szintaxissal rendelkezik:

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

Ahol:
• A Data_Range az adatok tartománya
• A Col a kívánt oszlop egész száma
• Az 1. paraméter, a 2. paraméter és a 3. paraméter az első három oszlop értékei

Tehát, hogy:

= ThreeParameterVlookup (B6: G12,6, „Mark”, „Brown”, 7) visszaadja a „Tolworth” -t, mivel ez a „Mark”, a „Brown” és a 7 egyezése, és a 6. oszlopra való hivatkozás

Vegye figyelembe, hogy ez a funkció a (dinamikus) elnevezésű tartományokkal is működik:

= A ThreeParameterVlookup (nevű_tartomány, 6, „Adrian”, „Fehér”, 7) a „Chessington” értéket adja vissza, ahol beállítottuk a „Named_Range” tartományt.

Ha az Excel nem találja az egyezést, akkor alapértelmezés szerint a „N/A” érték jelenik meg. Valójában a függvény kezdetben N/A értéket feltételez, majd csak akkor változik, ha pontos egyezést talál.

Továbbá, ha a Col értéke meghaladja az oszlopok számát, akkor referencia hiba lép fel.

Az oktatóanyag .XLSM fájljának letöltéséhez kattintson ide

wave wave wave wave wave