Vlookup vairāki kritēriji ar VBA UDF - VBA koda piemēri

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

wave wave wave wave wave