Vlookup Useita ehtoja VBA: n avulla
Harkitse seuraavaa tietotaulukkoa:
Excelin vakiomuotoinen Vlookup -toiminto on seuraavassa muodossa:
VLOOKUP (“” Mark ”, B6: G12”, 2, FALSE)
Joka palauttaa "ruskean".
Entä jos haluaisimme tarkastella kahta tai useampaa ehtoa, esim. Etunimi, sukunimi ja ikä yllä olevassa taulukossa? Seuraavan UDF: n avulla voimme tehdä tämän:
123456789101112131415161718192021222324252627282930313233343536373839 | Toiminto Kolme parametria'Ilmoita muuttujatHimmeä soluHimmennä nykyinen_rivi kokonaislukunaDim No_Of_Rows_in_Range kokonaislukunaDim No_of_Cols_in_Range kokonaislukunaDim Matching_Row kokonaislukunaAseta oletusarvoisesti vastaukseksi N/AThreeParameterVlookup = CVErr (xlErrNA)Vastaava_rivi = 0Nykyinen_rivi = 1No_Of_Rows_in_Range = Data_Range.Rows.CountNo_of_Cols_in_Range = Data_Range.Columns.Count'Tarkista, onko Col suurempi kuin alueen sarakkeiden määräJos (Col> No_of_Cols_in_Range) SittenThreeParameterVlookup = CVErr (xlErrRef)Loppu JosJos (Col <= No_of_Cols_in_Range) SittenTehdäJos ((Data_Range.Cells (Current_Row, 1). Value = Parameter1) Ja _(Data_Range.Cells (Current_Row, 2). Value = Parameter2) Ja _(Data_Range.Cells (Current_Row, 3). Value = Parameter3)) SittenMatching_Row = Nykyinen_riviLoppu JosNykyinen_rivi = Nykyinen_rivi + 1Silmukka asti ((Current_Row = No_Of_Rows_in_Range) Tai (Matching_Row 0))Jos Matching_Row 0 SittenThreeParameterVlookup = Data_Range.Cells (Matching_Row, Col)Loppu JosLoppu JosLopeta toiminto |
Siinä on seuraava syntaksi:
ThreeParameterVlookup (Data_Range, Col, Parameter1, Parameter2, Parameter3)
Missä:
• Data_Range on tietojen alue
• Col on vaaditun sarakkeen kokonaisluku
• Parametri1, parametri2 ja parametri3 ovat kolmen ensimmäisen sarakkeen arvot
Jotta:
= ThreeParameterVlookup (B6: G12,6, "Mark", "Brown", 7) palauttaa "Tolworth", koska tämä on osuma "Mark", "Brown" ja 7 ja viittaus kuuteen sarakkeeseen
Huomaa, että tämä toiminto toimii myös (dynaamisten) nimettyjen alueiden kanssa:
= ThreeParameterVlookup (nimetty_alue, 6, ”Adrian”, ”Valkoinen”, 7) palauttaa arvon ”Chessington”, jossa olemme määrittäneet nimitetyn alueen ”Named_Range”.
Jos Excel ei löydä osumaa, "N/A" palautetaan oletuksena. Itse asiassa funktio olettaa alussa arvon N/A ja muuttuu vasta sitten, kun se löytää tarkan vastaavuuden.
Myös jos Colin arvo ylittää sarakkeiden määrän, tapahtuu viitevirhe.
Voit ladata .XLSM -tiedoston tähän opetusohjelmaan napsauttamalla tätä