Kehittynyt VLOOKUP Excelissä: moninkertainen, kaksinkertainen, sisäkkäinen

  • Jaa Tämä
Michael Brown

Näissä esimerkeissä opit, miten voit tehdä Vlookup-haun useilla kriteereillä, palauttaa tietyn tapauksen tai kaikki osumat, tehdä dynaamisen Vlookup-haun useilla arkeilla ja paljon muuta.

Se on sarjan toinen osa, joka auttaa sinua hyödyntämään Excelin VLOOKUPin tehoa. Esimerkit edellyttävät, että tiedät, miten tämä funktio toimii. Jos et tiedä, on järkevää aloittaa VLOOKUPin peruskäytöstä Excelissä.

Ennen kuin siirrymme pidemmälle, muistutan teitä lyhyesti syntaksista:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

Nyt kun kaikki ovat samalla sivulla, tarkastellaan tarkemmin edistyneen VLOOKUP-kaavan esimerkkejä:

    Miten Vlookup useita kriteerejä

    Excelin VLOOKUP-toiminto on todella hyödyllinen, kun on kyse tietyn arvon etsimisestä tietokannasta. Siitä puuttuu kuitenkin tärkeä ominaisuus - sen syntaksi sallii vain yhden hakuarvon. Mutta entä jos haluat etsiä useilla ehdoilla? Voit valita muutamasta eri ratkaisusta.

    Kaava 1. VLOOKUP kahdella kriteerillä

    Oletetaan, että sinulla on luettelo tilauksista ja haluat löytää määrän kahden kriteerin perusteella, Asiakkaan nimi ja Tuote Asiaa vaikeuttaa se, että kukin asiakas tilasi useita tuotteita, kuten alla olevasta taulukosta käy ilmi:

    Tavallinen VLOOKUP-kaava ei toimi tässä tilanteessa, koska se palauttaa ensimmäisen löydetyn osuman, joka perustuu yhteen määritettyyn hakuarvoon.

    Tämän voit ratkaista lisäämällä apusarakkeen ja yhdistämällä kahden hakusarakkeen arvot ( Asiakas ja Tuote On tärkeää, että apusarakkeen on oltava sarakkeen vasemmanpuoleisin sarakkeeseen, koska Excelin VLOOKUP etsii hakuarvoa aina sieltä.

    Lisää siis sarake taulukon vasemmalle puolelle ja kopioi alla oleva kaava koko sarakkeeseen. Tämä täyttää apusarakkeen sarakkeiden B ja C arvoilla (välilyönti on yhdistetty väliin luettavuuden parantamiseksi):

    =B2&" "&C2

    Käytä sitten tavallista VLOOKUP-kaavaa ja sijoita molemmat kriteerit kenttään lookup_value argumentti, välilyönnillä erotettuna:

    =VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)

    Tai voit syöttää kriteerit erillisiin soluihin (meidän tapauksessamme G1 ja G2) ja yhdistää nämä solut:

    =VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)

    Koska haluamme palauttaa arvon sarakkeesta D, joka on taulukkomassan neljäs, käytämme 4:ää merkkinä col_index_num . range_lookup argumentin arvoksi on asetettu FALSE, jotta Vlookup etsii tarkan vastaavuuden. Alla olevassa kuvakaappauksessa näkyy tulos:

    Jos hakutaulukkosi on osoitteessa toinen arkki , sisällytä VLOOKUP-kaavaan arkin nimi. Esimerkiksi:

    =VLOOKUP(G1&" "&G2, Tilaukset!A2:D11, 4, FALSE)

    Vaihtoehtoisesti voit luoda hakutaulukkoa varten nimetyn alueen (esim, Tilaukset ), jotta kaavaa olisi helpompi lukea:

    =VLOOKUP(G1&" "&G2, Tilaukset, 4, FALSE)

    Lisätietoja on kohdassa Vlookupin tekeminen toisesta Excel-arkista.

    Huomautus: Jotta kaava toimisi oikein, apusarakkeen arvot on ketjutettava täsmälleen samalla tavalla kuin sarakkeessa lookup_value Esimerkiksi käytimme välilyöntiä erottamaan kriteerit sekä apusarakkeessa (B2&" "&C2) että VLOOKUP-kaavassa (G1&" "&G2).

    Kaava 2. Excel VLOOKUP useilla ehdoilla

    Teoriassa voit käyttää edellä esitettyä lähestymistapaa Vlookup-luettelon tekemiseen useammasta kuin kahdesta kriteeristä. Siihen liittyy kuitenkin pari varoitusta. Ensinnäkin hakuarvo on rajoitettu 255 merkkiin, ja toiseksi laskentataulukon rakenne ei välttämättä salli apusarakkeen lisäämistä.

    Onneksi Microsoft Excel tarjoaa usein useamman kuin yhden tavan tehdä sama asia. Voit tehdä useiden kriteerien hakuanalyysin käyttämällä joko INDEX MATCH -yhdistelmää tai Office 365:ssä hiljattain käyttöön otettua XLOOKUP-toimintoa.

    Jos haluat esimerkiksi etsiä 3 eri arvon perusteella ( Päivämäärä , Asiakkaan nimi ja Tuote ), käytä jotakin seuraavista kaavoista:

    =INDEX(D2:D11, MATCH(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), 0)))

    =XLOOKUP(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), D2:D11)

    Missä:

    • G1 on kriteeri 1 (päivämäärä)
    • G2 on kriteeri 2 (asiakkaan nimi)
    • G3 on kriteeri 3 (tuote)
    • A2:A11 on hakualue 1 (päivämäärät).
    • B2:B11 on hakualue 2 (asiakkaiden nimet).
    • C2:C11 on hakualue 3 (tuotteet).
    • D2:D11 on palautusalue (määrä).

    Huomautus: Kaikissa muissa versioissa paitsi Excel 365:ssä INDEX MATCH tulee syöttää CSE-määrityskaavana painamalla Ctrl + Shift + Enter. Excel 365:ssä, joka tukee dynaamisia määriä, se toimii myös tavallisena kaavana.

    Kaavojen yksityiskohtainen selitys on osoitteessa:

    • XLOOKUP useilla kriteereillä
    • INDEX MATCH -kaava useilla kriteereillä

    Kuinka käyttää VLOOKUP:ia saadaksesi 2., 3. tai n:nnen ottelun

    Kuten jo tiedät, Excelin VLOOKUP voi hakea vain yhden täsmäävän arvon, tarkemmin sanottuna se palauttaa ensimmäisen löydetyn täsmäävän arvon. Mutta entä jos hakumassassa on useita täsmääviä arvoja ja haluat saada toisen tai kolmannen? Tehtävä kuulostaa melko monimutkaiselta, mutta ratkaisu on olemassa!

    Kaava 1. Vlookup N:s instanssi

    Oletetaan, että sinulla on asiakkaiden nimet yhdessä sarakkeessa, heidän ostamansa tuotteet toisessa sarakkeessa ja haluat löytää tietyn asiakkaan ostaman toisen tai kolmannen tuotteen.

    Yksinkertaisin tapa on lisätä apusarake taulukon vasemmalle puolelle, kuten ensimmäisessä esimerkissä. Tällä kertaa täytämme sen kuitenkin asiakkaiden nimillä ja esiintymisnumeroilla, kuten " John Doe1 ", " John Doe2 " jne.

    Saat esiintymän käyttämällä COUNTIF-funktiota ja sekoitettua alueviittausta (ensimmäinen viittaus on absoluuttinen ja toinen suhteellinen, kuten $B$2:B2). Koska suhteellinen viittaus muuttuu sen solun sijainnin mukaan, johon kaava kopioidaan, rivillä 3 siitä tulee $B$2:B3, rivillä 4 - $B$2:B4 ja niin edelleen.

    Yhdistettynä asiakkaan nimen (B2) kanssa kaava on seuraavanlainen:

    =B2&COUNTIF($B$2:B2, B2)

    Yllä oleva kaava siirretään A2:een, ja kopioi se sitten niin moneen soluun kuin tarvitaan.

    Syötä sen jälkeen kohteen nimi ja esiintymän numero erillisiin soluihin (F1 ja F2) ja käytä alla olevaa kaavaa tietyn esiintymän hakuun:

    =VLOOKUP(F1&F2, A2:C11, 3, FALSE)

    Kaava 2. Vlookup 2. esiintyminen

    Jos etsit hakuarvon toista esiintymää, voit luopua apusarakkeesta ja luoda taulukkomäärän dynaamisesti käyttämällä INDIRECT-funktiota yhdessä MATCHin kanssa:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)

    Missä:

    • E1 on hakuarvo
    • A2:A11 on hakualue
    • B11 on hakutaulukon viimeinen (alhaalla oikealla oleva) solu.

    Huomaa, että yllä oleva kaava on kirjoitettu erityistapausta varten, jossa hakutaulukon solut alkavat riviltä 2. Jos taulukkosi on jossain keskellä arkkia, käytä tätä yleiskaavaa, jossa A1 on hakutaulukon vasemmanpuoleisin ylin solu, joka sisältää sarakeotsikon:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE)

    Miten tämä kaava toimii

    Tässä on kaavan keskeinen osa, jolla luodaan dynaaminen vlookup-alue :

    INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")

    Tarkkaa vastaavuutta varten määritetty MATCH-funktio (0 viimeisessä argumentissa) vertaa kohdennenimeä (E1) nimiluetteloon (A2:A11) ja palauttaa ensimmäisen löydetyn vastaavuuden sijainnin, joka tässä tapauksessa on 3. Tätä numeroa käytetään vlookup-alueen alkurivin koordinaattina, joten siihen lisätään 2 (+1, jotta ensimmäinen esiintymä jätetään pois ja +1, jotta rivi 1, jossa on sarakeotsikot, jätetään pois).Vaihtoehtoisesti voit käyttää 1+ROW(A1) -toimintoa, jolloin tarvittava mukautus lasketaan automaattisesti otsikkorivin (tässä tapauksessa A1) sijainnin perusteella.

    Tuloksena saadaan seuraava merkkijono, jonka INDIRECT muuntaa alueviitteeksi:

    INDIRECT("A"&5&":B11") -> A5:B11

    Tämä alue ulottuu table_array VLOOKUP-argumentti pakottaa sen aloittamaan haun riviltä 5, jolloin hakuarvon ensimmäinen esiintymä jää pois:

    VLOOKUP(E1, A5:B11, 2, FALSE)

    Kuinka Vlookup ja palauttaa useita arvoja Excelissä

    Excelin VLOOKUP-toiminto on suunniteltu palauttamaan vain yksi vastaavuus. Onko olemassa tapa Vlookup-toimintoon, jolla voidaan muodostaa useita tapauksia? Kyllä, on, vaikkakaan ei helppoa. Tämä edellyttää useiden funktioiden, kuten INDEX, SMALL ja ROW, yhdistettyä käyttöä on array-kaava.

    Esimerkiksi alla oleva voi etsiä kaikki hakuarvon F2 esiintymät hakualueella B2:B16 ja palauttaa useita vastaavuuksia sarakkeesta C:

    {=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}

    Kaava voidaan syöttää laskentataulukkoon kahdella tavalla:

    1. Kirjoita kaava ensimmäiseen soluun, paina Ctrl + Shift + Enter ja vedä se sitten alaspäin muutamaan muuhun soluun.
    2. Valitse useita vierekkäisiä soluja yhdestä sarakkeesta (F1:F11 alla olevassa kuvassa), kirjoita kaava ja paina Ctrl+Shift+Enter.

    Joka tapauksessa niiden solujen määrän, joihin kaava syötetään, on oltava yhtä suuri tai suurempi kuin mahdollisten vastaavuuksien enimmäismäärä.

    Yksityiskohtainen selitys kaavan logiikasta ja lisää esimerkkejä on osoitteessa VLOOKUP-monien arvojen määrittäminen Excelissä.

    Miten Vlookup riveillä ja sarakkeissa (kaksisuuntainen haku)

    Kaksisuuntainen haku (alias matriisin haku tai 2-ulotteinen haku ) on hieno sana arvon etsimiseen tietyn rivin ja sarakkeen leikkauspisteestä. Excelissä on muutamia eri tapoja tehdä kaksiulotteisia hakuja, mutta koska tässä oppaassa keskitytään VLOOKUP-toimintoon, käytämme luonnollisesti sitä.

    Tässä esimerkissä otamme alla olevan taulukon, jossa on kuukausittainen myynti, ja laadimme VLOOKUP-kaavan, jolla haemme tietyn tuotteen myyntiluvun tiettynä kuukautena.

    Kun kohteiden nimet ovat A2:A9, kuukausien nimet B1:F1, kohdekohde I1 ja kohdekuukausi I2, kaava on seuraava:

    =VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)

    Miten tämä kaava toimii

    Kaavan ydin on tavallinen VLOOKUP-funktio, joka etsii tarkkaa vastaavuutta hakuarvoon I1. Koska emme kuitenkaan tiedä, missä sarakkeessa tietyn kuukauden myynti on, emme voi antaa sarakkeen numeroa suoraan funktioon VLOOKUP. col_index_num Sarakkeen löytämiseksi käytetään seuraavaa MATCH-funktiota:

    MATCH(I2, A1:F1, 0)

    Suomeksi käännettynä kaava sanoo: etsi I2-arvo A1:F1:stä ja palauta sen suhteellinen sijainti matriisissa. Antamalla 0 kolmanteen argumenttiin käsketään MATCH:ia etsimään arvo, joka on täsmälleen yhtä suuri kuin hakuarvo (se on kuin käyttäisi FALSE:a arvolle range_lookup VLOOKUP-argumentti).

    Koska Mar on hakumassan neljännessä sarakkeessa, MATCH-funktio palauttaa arvon 4, joka menee suoraan sarakkeeseen col_index_num VLOOKUPin argumentti:

    VLOOKUP(I1, A2:F9, 4, FALSE)

    Huomaa, että vaikka kuukausien nimet alkavat sarakkeesta B, käytämme A1:I1:tä hakumassana, jotta MATCHin palauttama numero vastaa sarakkeen sijaintia sarakkeessa table_array VLOOKUPin avulla.

    Jos haluat oppia lisää tapoja suorittaa matriisihakuja Excelissä, katso INDEX MATCH MATCH ja muut kaksiulotteisen haun kaavat.

    Miten tehdä useita Vlookup Excelissä (sisäkkäiset Vlookup)

    Joskus voi käydä niin, että päätaulukkosi ja hakutaulukkosi välillä ei ole yhtään yhteistä saraketta, mikä estää sinua tekemästä Vlookup-laskua kahden taulukon välillä. On kuitenkin olemassa toinen taulukko, joka ei sisällä etsimääsi tietoa, mutta jolla on yksi yhteinen sarake päätaulukon kanssa ja toinen yhteinen sarake hakutaulukon kanssa.

    Alla oleva kuva havainnollistaa tilannetta:

    Tarkoituksena on kopioida hinnat päätaulukkoon seuraavien tietojen perusteella Kohteen tunnukset Ongelmana on se, että hintoja sisältävässä taulukossa ei ole hintatietoja. Kohteen tunnukset , mikä tarkoittaa, että meidän on tehtävä kaksi Vlookupia yhdessä kaavassa.

    Yksinkertaisuuden vuoksi luodaan ensin pari nimettyä aluetta:

    • Hakutaulukon 1 nimi on Tuotteet (D3:E10)
    • Hakutaulukon 2 nimi on Hinnat ( G3:H10 )

    Taulukot voivat olla samassa tai eri laskentataulukoissa.

    Ja nyt suoritamme ns. double Vlookup eli sisäkkäinen Vlookup .

    Tee ensin VLOOKUP-kaava, jolla etsitään tuotteen nimi hakutaulukosta 1 (nimeltään Tuotteet ) kohteen tunnuksen (A3) perusteella:

    =VLOOKUP(A3, Tuotteet, 2, FALSE)

    Laita seuraavaksi yllä oleva kaava lookup_value toisen VLOOKUP-funktion argumentti, jolla vedetään hinnat Lookup-taulukosta 2 (nimeltään Hinnat ) sisäkkäisen VLOOKUPin palauttaman tuotenimen perusteella:

    =VLOOKUP(VLOOKUP(A3, tuotteet, 2, FALSE), hinnat, 2, FALSE)

    Alla olevassa kuvakaappauksessa näkyy sisäkkäinen Vlookup-kaavamme toiminnassa:

    Miten Vlookup useita arkkia dynaamisesti

    Joskus sinulla voi olla samassa muodossa olevia tietoja, jotka on jaettu useille työarkkeille. Tarkoituksesi on hakea tietoja tietystä arkista tietyn solun avainarvon perusteella.

    Tämä on ehkä helpompi ymmärtää esimerkin avulla. Oletetaan, että sinulla on useita samassa muodossa olevia alueellisia myyntiraportteja, ja haluat saada tietyn tuotteen myyntiluvut tietyillä alueilla:

    Kuten edellisessä esimerkissä, aloitamme määrittelemällä muutaman nimen:

    • CA-arkin alue A2:B5 on nimetty CA_Sales .
    • FL-arkin alue A2:B5 on nimetty FL_Sales .
    • KS-arkin alue A2:B5 on nimeltään KS_Sales .

    Kuten näet, kaikilla nimetyillä alueilla on yhteinen osa ( Myynti ) ja ainutlaatuiset osat ( CA , FL , KS ). Muista nimetä alueesi samalla tavalla, sillä se on tärkeää kaavan rakentamisen kannalta.

    Kaava 1. INDIRECT VLOOKUP tietojen dynaamiseen hakemiseen eri arkeista.

    Jos tehtävänäsi on hakea tietoja useista arkeista, VLOOKUP INDIRECT -kaava on paras ratkaisu - se on kompakti ja helposti ymmärrettävä.

    Tässä esimerkissä järjestämme yhteenvetotaulukon näin:

    • Syötä kiinnostavat tuotteet kenttiin A2 ja A3. Ne ovat hakuarvomme.
    • Kirjoita nimettyjen alueiden yksilölliset osat kohtiin B1, C1 ja D1.

    Nyt yhdistämme solun, joka sisältää yksilöllisen osan (B1), ja yhteisen osan ("_Myynti") ja syötämme tuloksena syntyvän merkkijonon INDIRECT-ohjelmaan:

    INDIRECT(B$1&"_Myynti")

    INDIRECT-funktio muuttaa merkkijonon Excelin ymmärtämäksi nimeksi, ja laitat sen kenttään table_array VLOOKUPin argumentti:

    =VLOOKUP($A2, INDIRECT(B$1&"_Myynti"), 2, FALSE)

    Yllä oleva kaava menee B2:een, ja sitten kopioit sen alaspäin ja oikealle.

    Kiinnitä huomiota siihen, että hakuarvossa ($A2) olemme lukinneet sarakekoordinaatin absoluuttisella soluviittauksella, jotta sarake pysyy kiinteänä, kun kaava kopioidaan oikealle. Viittauksessa B$1 lukitsimme rivin, koska haluamme, että sarakekoordinaatti muuttuu ja antaa INDIRECTille sopivan nimiosan riippuen sarakkeesta, johon kaava kopioidaan:

    Jos päätaulukkosi on järjestetty eri tavalla, hakuarvot rivillä ja alueen nimien yksilölliset osat sarakkeessa, sinun pitäisi lukita rivikoordinaatti hakuarvoon (B$1) ja sarakekoordinaatti nimiosiin ($A2):

    =VLOOKUP(B$1, INDIRECT($A2&"_Myynti"), 2, FALSE)

    Kaava 2. VLOOKUP ja sisäkkäiset IF:t useiden arkkien etsimiseksi.

    Jos sinulla on vain kaksi tai kolme hakuarkkia, voit käyttää melko yksinkertaista VLOOKUP-kaavaa, jossa on sisäkkäisiä IF-funktioita, valitsemaan oikean arkin tietyn solun avainarvon perusteella:

    =VLOOKUP($A2, IF(B$1="CA", CA_Myynti, IF(B$1="FL", FL_Myynti, IF(B$1="KS", KS_Myynti,""))), 2, FALSE)

    Jossa $A2 on hakuarvo (nimikkeen nimi) ja B$1 on avainarvo (tila):

    Tällöin sinun ei välttämättä tarvitse määritellä nimiä, vaan voit käyttää ulkoisia viittauksia toiseen arkistoon tai työkirjaan.

    Lisää kaavaesimerkkejä on kohdassa VLOOKUPin käyttäminen useilla Excel-arkkeilla.

    Näin käytät VLOOKUPia Excelissä. Kiitos lukemisesta ja toivottavasti tapaamme blogissamme ensi viikolla!

    Käytännön työkirja ladattavissa

    Edistyneet VLOOKUP-kaavan esimerkit (.xlsx-tiedosto)

    Michael Brown on omistautunut teknologian harrastaja, jolla on intohimo yksinkertaistaa monimutkaisia ​​prosesseja ohjelmistotyökalujen avulla. Yli vuosikymmenen kokemuksella teknologia-alalta hän on hionut taitojaan Microsoft Excelissä ja Outlookissa sekä Google Sheetsissä ja Docsissa. Michaelin blogi on omistettu jakamaan tietojaan ja asiantuntemustaan ​​muiden kanssa, ja se tarjoaa helposti seurattavia vinkkejä ja opetusohjelmia tuottavuuden ja tehokkuuden parantamiseksi. Olitpa kokenut ammattilainen tai aloittelija, Michaelin blogi tarjoaa arvokkaita oivalluksia ja käytännön neuvoja, joiden avulla saat kaiken irti näistä tärkeistä ohjelmistotyökaluista.