Vlookup vairāki nosacījumi, izmantojot VBA
Apsveriet šādu datu tabulu:
Standarta Vlookup funkcijai programmā Excel ir šāds formāts:
VLOOKUP (“” Marks ”, B6: G12”, 2, FALSE)
Kas atgriezīsies “Brūns”.
Tomēr kā būtu, ja mēs iepriekš tabulā vēlētos noskaidrot divus vai vairākus nosacījumus, piemēram, vārdu, uzvārdu un vecumu? Šis UDF ļauj mums to izdarīt:
123456789101112131415161718192021222324252627282930313233343536373839 | Funkcija ThreeParameterVlookup (datu diapazons kā diapazons, kolonna kā vesels skaitlis, 1. parametrs kā variants, 2. parametrs kā variants, 3. parametrs kā variants) kā variants'Deklarēt mainīgosDim šūnaDim pašreizējā_rindā kā vesels skaitlisDim No_Of_Rows_in_Range Kā vesels skaitlisDim No_of_Cols_in_Range Kā vesels skaitlisDim atbilstoša_rinda kā vesels skaitlis'pēc noklusējuma iestatiet atbildi uz N/AThreeParameterVlookup = CVErr (xlErrNA)Atbilstoša_rinda = 0Pašreizējā_rinda = 1No_Of_Rows_in_Range = Data_Range.Rows.CountNo_of_Cols_in_Range = Data_Range.Columns.CountPārbaudiet, vai kolonna ir lielāka par diapazonā esošo kolonnu skaituJa (kolonna> Nr. Diapazona Nr.) TadThreeParameterVlookup = CVErr (xlErrRef)Beigas JaJa (kolonna <= No_of_Cols_in_Range) TadVaiIf ((Data_Range.Cells (Current_Row, 1). Value = Parameter1) Un _[Data_Range.Cells (Current_Row, 2). Value = Parameter2] Un _[Data_Range.Cells (Current_Row, 3). Value = Parameter3]) TadMatching_Row = Pašreizējā_rindaBeigas JaCurrent_Row = Pašreizējā_rinda + 1Cikls līdz ((Current_Row = No_Of_Rows_in_Range) Vai (Matching_Row 0))Ja Matching_Row 0 TadThreeParameterVlookup = Data_Range.Cells (Matching_Row, Col.)Beigas JaBeigas JaBeigu funkcija |
Tam ir šāda sintakse:
ThreeParameterVlookup (Data_Range, Col, Parameter1, Parameter2, Parameter3)
Kur:
• Data_Range ir datu diapazons
• Col ir veselais skaitlis nepieciešamajai kolonnai
• Parametrs1, Parametrs2 un Parametrs3 ir attiecīgi vērtības no pirmajām trim kolonnām
Tā ka:
= ThreeParameterVlookup (B6: G12,6, “Marks”, “Brūns”, 7) atgriezīs “Tolworth”, jo tas atbilst “Mark”, “Brown” un 7 un atsauce uz 6. sleju
Ņemiet vērā, ka šī funkcija darbosies arī ar (dinamiskiem) nosauktajiem diapazoniem:
= ThreeParameterVlookup (nosaukts_diapazons, 6, “Adrian”, “White”, 7) atgriezīs “Chessington”, kur mēs esam iestatījuši nosaukto diapazonu “Named_Range”.
Ja Excel nevar atrast atbilstību, pēc noklusējuma tiek atgriezts “N/A”. Faktiski funkcija sākumā pieņem vērtību N/A un pēc tam mainās tikai tad, kad tā atrod precīzu atbilstību.
Arī tad, ja kolonnas vērtība pārsniedz kolonnu skaitu, rodas atsauces kļūda.
Lai lejupielādētu .XLSM failu šai apmācībai, noklikšķiniet šeit