Vlookup Viac podmienok pomocou VBA
Zvážte nasledujúcu tabuľku údajov:
Štandardná funkcia Vlookup v programe Excel má nasledujúci formát:
VLOOKUP („“ Značka ”, B6: G12“, 2, NEPRAVDA)
Čo vráti „Brown“.
Čo však keby sme chceli vyhľadať 2 alebo viac podmienok, ako napríklad meno, priezvisko a vek v tabuľke vyššie? Nasledujúci UDF nám to umožňuje:
123456789101112131415161718192021222324252627282930313233343536373839 | Funkcia ThreeParameterVlookup (Data_Range As Range, Col As Integer, Parameter1 As Variant, Parameter2 As Variant, Parameter3 As Variant) As Variant„Vyhláste premennéDim CellDim Current_Row As IntegerDim No_Of_Rows_in_Range as IntegerDim No_of_Cols_in_Range as IntegerDim Matching_Row As Integer'predvolene nastaviť odpoveď na N/AThreeParameterVlookup = CVErr (xlErrNA)Matching_Row = 0Current_Row = 1No_Of_Rows_in_Range = Data_Range.Rows.CountNo_of_Cols_in_Range = Data_Range.Columns.Count„Skontrolujte, či je hodnota Col väčšia ako počet stĺpcov v rozsahuAk (Col> No_of_Cols_in_Range) PotomThreeParameterVlookup = CVErr (xlErrRef)Koniec AkIf (Col <= No_of_Cols_in_Range) ThenUrobIf ((Data_Range.Cells (Current_Row, 1) .Value = Parameter1) And _(Data_Range.Cells (Current_Row, 2) .Value = Parameter2) And _(Data_Range.Cells (Current_Row, 3) .Value = Parameter3)) PotomMatching_Row = Current_RowKoniec AkCurrent_Row = Current_Row + 1Slučka do ((Current_Row = No_Of_Rows_in_Range) Alebo (Matching_Row 0))Ak Matching_Row 0 PotomThreeParameterVlookup = Data_Range.Cells (Matching_Row, Col)Koniec AkKoniec AkKoncová funkcia |
Má nasledujúcu syntax:
ThreeParameterVlookup (Data_Range, Col, Parameter1, Parameter2, Parameter3)
Kde:
• Data_Range je rozsah údajov
• Col je celé číslo pre požadovaný stĺpec
• Parameter1, Parameter2 a Parameter3 sú hodnoty z prvých troch stĺpcov
Takže:
= ThreeParameterVlookup (B6: G12,6, „Mark“, „Brown“, 7) vráti „Tolworth“, pretože ide o zhodu v položkách „Mark“, „Brown“ a 7 a odkaz na 6. stĺpec
Táto funkcia bude fungovať aj s (dynamickými) pomenovanými rozsahmi:
= ThreeParameterVlookup (pomenovaný_rozsah, 6, „Adrian“, „biely“, 7) vráti „Chessington“, kde sme nastavili pomenovaný rozsah „Named_Range“.
Ak Excel nemôže nájsť zhodu, predvolene sa vráti „N/A“. V skutočnosti táto funkcia na začiatku predpokladá hodnotu N/A a potom sa zmení iba vtedy, ak nájde presnú zhodu.
Tiež ak hodnota Col prekročí počet stĺpcov, dôjde k referenčnej chybe.
Kliknite sem, ak si chcete stiahnuť súbor .XLSM pre tento návod