Geavanceerde VLOOKUP in Excel: meervoudig, dubbel, genest

  • Deel Dit
Michael Brown

Deze voorbeelden leren u hoe u meerdere criteria kunt Vlookup-en, een specifiek geval of alle overeenkomsten kunt retourneren, een dynamische Vlookup kunt uitvoeren in meerdere bladen, en meer.

Dit is het tweede deel van de serie die u helpt de kracht van Excel VLOOKUP te benutten. De voorbeelden veronderstellen dat u weet hoe deze functie werkt. Zo niet, dan is het logisch om te beginnen met het basisgebruik van VLOOKUP in Excel.

Voordat ik verder ga, wil ik u even herinneren aan de syntaxis:

VLOOKUP(lookup_waarde, tabel_array, col_index_num, [range_lookup])

Nu iedereen op één lijn zit, gaan we de geavanceerde VLOOKUP-formulevoorbeelden nader bekijken:

    Hoe meerdere criteria te Vlookup-en

    De Excel VLOOKUP-functie is erg handig wanneer u in een database naar een bepaalde waarde wilt zoeken. Er ontbreekt echter een belangrijke functie - de syntaxis ervan staat slechts één opzoekwaarde toe. Maar wat als u met meerdere voorwaarden wilt opzoeken? Er zijn een paar verschillende oplossingen waaruit u kunt kiezen.

    Formule 1. VLOOKUP met twee criteria

    Stel u hebt een lijst met bestellingen en u wilt de hoeveelheid vinden op basis van 2 criteria, Naam van de klant en Product Een complicerende factor is dat elke klant meerdere producten bestelde, zoals blijkt uit onderstaande tabel:

    Een gebruikelijke VLOOKUP-formule zal in deze situatie niet werken, omdat deze de eerste gevonden overeenkomst teruggeeft op basis van een enkele opzoekwaarde die u opgeeft.

    Om dit te ondervangen, kunt u een hulpkolom toevoegen en de waarden van twee opzoekkolommen aan elkaar rijgen ( Klant en Product ) daar. Het is belangrijk dat de hulpkolom de meest linkse kolom in de tabelarray omdat Excel VLOOKUP daar altijd zoekt naar de opzoekwaarde.

    Voeg dus een kolom toe aan de linkerkant van uw tabel en kopieer de onderstaande formule over die kolom. Hierdoor wordt de hulpkolom gevuld met de waarden uit de kolommen B en C (de spatie wordt ertussen gezet voor een betere leesbaarheid):

    =B2&" "&C2

    En gebruik dan een standaard VLOOKUP formule en plaats beide criteria in de lookup_waarde argument, gescheiden door een spatie:

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

    Of voer de criteria in afzonderlijke cellen in (G1 en G2 in ons geval) en voeg die cellen samen:

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

    Omdat we een waarde willen teruggeven uit kolom D, die vierde is in de tabel-array, gebruiken we 4 voor col_index_num . de range_lookup argument is ingesteld op FALSE om een exacte match te Vlookup-en. De schermafbeelding hieronder toont het resultaat:

    Als uw opzoektabel in een ander blad neem de naam van het blad op in uw VLOOKUP-formule. Bijvoorbeeld:

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

    U kunt ook een naambereik maken voor de opzoektabel (bijvoorbeeld, Bestellingen ) om de formule gemakkelijker leesbaar te maken:

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

    Voor meer informatie, zie Hoe Vlookup te doen vanuit een ander blad in Excel.

    Opmerking. Om de formule correct te laten werken, moeten de waarden in de hulpkolom op precies dezelfde manier aan elkaar worden gekoppeld als in de lookup_waarde argument. Wij hebben bijvoorbeeld een spatie gebruikt om de criteria te scheiden in zowel de hulpkolom (B2&" "&C2) als de VLOOKUP-formule (G1&" "&G2).

    Formule 2. Excel VLOOKUP met meerdere voorwaarden

    In theorie kunt u de bovenstaande aanpak gebruiken om meer dan twee criteria te Vlookup-en. Er zijn echter een paar bezwaren: ten eerste is een lookup-waarde beperkt tot 255 tekens, en ten tweede staat het ontwerp van het werkblad het toevoegen van een hulpkolom misschien niet toe.

    Gelukkig biedt Microsoft Excel vaak meer dan één manier om hetzelfde te doen. Om meerdere criteria te Vlookup-en, kunt u een INDEX MATCH-combinatie gebruiken of de XLOOKUP-functie die onlangs in Office 365 is geïntroduceerd.

    Bijvoorbeeld, om op te zoeken op basis van 3 verschillende waarden ( Datum , Naam van de klant en Product ), gebruik een van de volgende formules:

    =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)

    Waar:

    • G1 is criterium 1 (datum)
    • G2 is criterium 2 (klantnaam)
    • G3 is criterium 3 (product)
    • A2:A11 is opzoekbereik 1 (data)
    • B2:B11 is lookup range 2 (klantnamen)
    • C2:C11 is lookup range 3 (producten)
    • D2:D11 is het retourbereik (hoeveelheid)

    Opmerking. In alle versies behalve Excel 365 moet INDEX MATCH worden ingevoerd als een CSE array formule door op Ctrl + Shift + Enter te drukken. In Excel 365 die dynamische arrays ondersteunt werkt het ook als een gewone formule.

    Voor een gedetailleerde uitleg van de formules, zie:

    • XLOOKUP met meerdere criteria
    • INDEX MATCH formule met meerdere criteria

    Hoe VLOOKUP gebruiken om de 2e, 3e of n-de overeenkomst te krijgen

    Zoals u al weet, kan Excel VLOOKUP slechts één overeenkomende waarde ophalen, meer precies, het retourneert de eerste gevonden overeenkomst. Maar wat als er meerdere overeenkomsten zijn in uw lookup array en u het 2e of 3e exemplaar wilt ophalen? De taak klinkt vrij ingewikkeld, maar de oplossing bestaat!

    Formule 1. Vlookup Nde instantie

    Stel, u hebt de namen van klanten in een kolom, de producten die ze gekocht hebben in een andere, en u zoekt het 2e of 3e product dat een bepaalde klant gekocht heeft.

    De eenvoudigste manier is om een hulpkolom toe te voegen aan de linkerkant van de tabel, zoals we in het eerste voorbeeld deden. Maar deze keer vullen we hem met klantnamen en voorvalnummers zoals " John Doe1 ", " John Doe2 ", enz.

    Om het voorkomen te verkrijgen, gebruikt u de functie COUNTIF met een gemengde bereikverwijzing (de eerste verwijzing is absoluut en de tweede is relatief, zoals $B$2:B2). Aangezien de relatieve verwijzing verandert op basis van de positie van de cel waar de formule wordt gekopieerd, wordt het in rij 3 $B$2:B3, in rij 4 - $B$2:B4, enzovoort.

    Samengevoegd met de klantnaam (B2) krijgt de formule deze vorm:

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

    De bovenstaande formule gaat naar A2, en dan kopieert u hem naar zoveel cellen als nodig.

    Voer daarna de doelnaam en het nummer van het voorval in afzonderlijke cellen in (F1 en F2), en gebruik de onderstaande formule om een specifiek voorval op te zoeken:

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

    Formule 2. Vlookup 2e voorkomen

    Indien u op zoek bent naar de 2e instantie van de lookup-waarde, dan kunt u zonder de hulpkolom. In plaats daarvan maakt u de tabelarray dynamisch door gebruik te maken van de functie INDIRECT in combinatie met MATCH:

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

    Waar:

    • E1 is de opzoekwaarde
    • A2:A11 is het opzoekbereik
    • B11 is de laatste cel (rechtsonder) van de opzoektabel.

    Merk op dat de bovenstaande formule is geschreven voor een specifiek geval waarin de gegevenscellen in de opzoektabel beginnen in rij 2. Als uw tabel ergens in het midden van het blad staat, gebruik dan deze universele formule, waarbij A1 de cel linksboven van de opzoektabel is die een kolomkop bevat:

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

    Hoe deze formule werkt

    Hier is het belangrijkste deel van de formule die een dynamisch vlookup-bereik :

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

    De MATCH functie geconfigureerd voor exacte overeenkomst (0 in het laatste argument) vergelijkt de doelnaam (E1) met de lijst van namen (A2:A11) en retourneert de positie van de eerste gevonden overeenkomst, die in ons geval 3 is. Dit getal zal worden gebruikt als de startrijcoördinaat voor het vlookup-bereik, dus voegen we er 2 aan toe (+1 om het eerste geval uit te sluiten en +1 om rij 1 met de kolomkoppen uit te sluiten).U kunt ook 1+ROW(A1) gebruiken om de nodige aanpassing automatisch te berekenen op basis van de positie van de koprij (A1 in ons geval).

    Als resultaat krijgen we de volgende tekststring, die INDIRECT omzet in een bereikverwijzing:

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

    Deze reeks gaat naar de tabel_array argument van VLOOKUP, waardoor het begint te zoeken in rij 5 en het eerste geval van de opzoekwaarde wordt weggelaten:

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

    Hoe Vlookup meerdere waarden oplevert in Excel

    De Excel VLOOKUP-functie is ontworpen om slechts één overeenkomst te retourneren. Is er een manier om meerdere keren te Vlookup-en? Ja, die is er, maar niet eenvoudig. Dit vereist een gecombineerd gebruik van verschillende functies zoals INDEX, SMALL en ROW is een matrixformule.

    Het onderstaande kan bijvoorbeeld alle voorkomen van de opzoekwaarde F2 in het opzoekbereik B2:B16 vinden en meerdere overeenkomsten uit kolom C teruggeven:

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

    Er zijn 2 manieren om de formule in uw werkblad in te voeren:

    1. Typ de formule in de eerste cel, druk op Ctrl + Shift + Enter , en sleep hem dan naar beneden naar een paar andere cellen.
    2. Selecteer verschillende aangrenzende cellen in een enkele kolom (F1:F11 in de onderstaande schermafbeelding), typ de formule en druk op Ctrl + Shift + Enter om deze te voltooien.

    Hoe dan ook, het aantal cellen waarin u de formule invoert moet gelijk zijn aan of groter dan het maximum aantal mogelijke overeenkomsten.

    Voor een gedetailleerde uitleg van de formule-logica en meer voorbeelden, zie Hoe VLOOKUP meerdere waarden in Excel.

    Hoe Vlookup in rijen en kolommen (tweezijdige lookup)

    Tweezijdige opzoeking (aka matrixopzoeking of 2-dimentionale lookup ) is een mooi woord voor het opzoeken van een waarde op het snijpunt van een bepaalde rij en kolom. Er zijn een paar verschillende manieren om tweedimensionaal op te zoeken in Excel, maar aangezien de nadruk in deze tutorial ligt op de VLOOKUP-functie, zullen we die uiteraard gebruiken.

    Voor dit voorbeeld nemen we de onderstaande tabel met maandelijkse verkopen en werken we een VLOOKUP-formule uit om het verkoopcijfer voor een bepaald artikel in een bepaalde maand op te halen.

    Met itemnamen in A2:A9, maandnamen in B1:F1, het doelitem in I1 en de doelmaand in I2 gaat de formule als volgt:

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

    Hoe deze formule werkt

    De kern van de formule is de standaard VLOOKUP-functie die zoekt naar een exacte match met de lookup-waarde in I1. Maar omdat we niet weten in welke kolom de verkopen voor een bepaalde maand precies staan, kunnen we het kolomnummer niet rechtstreeks aan de col_index_num Om die kolom te vinden, gebruiken we de volgende MATCH-functie:

    MATCH(I2, A1:F1, 0)

    Vertaald in het Engels zegt de formule: zoek de I2-waarde op in A1:F1 en geef de relatieve positie in de matrix terug. Door 0 op te geven bij het 3e argument, geef je MATCH de opdracht de waarde te vinden die precies gelijk is aan de opzoekwaarde (het is alsof je FALSE gebruikt voor het range_lookup argument van VLOOKUP).

    Sinds Mar in de 4e kolom van de lookup array staat, geeft de MATCH functie 4 terug, die direct naar de col_index_num argument van VLOOKUP:

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

    Let op: hoewel de maandnamen beginnen in kolom B, gebruiken we A1:I1 voor de lookup array. Dit is gedaan om ervoor te zorgen dat het nummer dat door MATCH wordt geretourneerd, overeenkomt met de positie van de kolom in tabel_array van VLOOKUP.

    Voor meer manieren om matrixopzoekingen uit te voeren in Excel, zie INDEX MATCH MATCH en andere formules voor 2-dimensionale opzoekingen.

    Hoe meerdere Vlookups doen in Excel (geneste Vlookups)

    Soms kan het gebeuren dat uw hoofdtabel en uw lookup-tabel geen enkele kolom gemeen hebben, waardoor u geen Vlookup tussen twee tabellen kunt uitvoeren. Er bestaat echter een andere tabel, die niet de informatie bevat die u zoekt, maar die één gemeenschappelijke kolom heeft met de hoofdtabel en een andere gemeenschappelijke kolom met de lookup-tabel.

    De onderstaande afbeelding illustreert de situatie:

    Het doel is prijzen te kopiëren naar de hoofdtabel op basis van Item ID's Het probleem is dat de tabel met prijzen niet de Item ID's wat betekent dat we twee Vlookups moeten doen in één formule.

    Laten we voor het gemak eerst een paar naamreeksen maken:

    • Opzoektabel 1 heet Producten (D3:E10)
    • Opzoektabel 2 heet Prijzen ( G3:H10 )

    De tabellen kunnen in dezelfde of in verschillende werkbladen staan.

    En nu zullen we de zogenaamde dubbele Vlookup , alias geneste Vlookup .

    Maak eerst een VLOOKUP-formule om de productnaam te vinden in de Lookup-tabel 1 (genaamd Producten ) op basis van het item id (A3):

    =VLOOKUP(A3, Producten, 2, FALSE)

    Zet vervolgens de bovenstaande formule in de lookup_waarde argument van een andere VLOOKUP-functie om prijzen uit tabel 2 te halen (genaamd Prijzen ) op basis van de productnaam die de geneste VLOOKUP oplevert:

    =VLOOKUP(VLOOKUP(A3, Producten, 2, FALSE), Prijzen, 2, FALSE)

    De onderstaande schermafbeelding toont onze geneste Vlookup-formule in actie:

    Hoe meerdere bladen dynamisch op te zoeken

    Soms hebt u gegevens in hetzelfde formaat, verdeeld over verschillende werkbladen. En uw doel is om gegevens uit een specifiek blad te halen, afhankelijk van de sleutelwaarde in een bepaalde cel.

    Dit is misschien gemakkelijker te begrijpen aan de hand van een voorbeeld: stel, u hebt een aantal regionale verkooprapporten in hetzelfde formaat, en u wilt de verkoopcijfers van een bepaald product in bepaalde regio's:

    Net als in het vorige voorbeeld beginnen we met het definiëren van een paar namen:

    • Het bereik A2:B5 in het blad CA heet CA_Sales .
    • Het bereik A2:B5 in FL-blad krijgt de naam FL_Sales .
    • Het bereik A2:B5 in het blad KS krijgt de naam KS_Sales .

    Zoals u kunt zien, hebben alle genoemde bereiken een gemeenschappelijk deel ( Verkoop ) en unieke onderdelen ( CA , FL , KS ). Zorg ervoor dat u uw bereiken op dezelfde manier benoemt, want dat is essentieel voor de formule die we gaan bouwen.

    Formule 1. INDIRECT VLOOKUP om dynamisch gegevens op te halen uit verschillende bladen

    Als u gegevens uit meerdere bladen moet ophalen, is een VLOOKUP INDIRECT-formule de beste oplossing - compact en gemakkelijk te begrijpen.

    Voor dit voorbeeld organiseren we de overzichtstabel op deze manier:

    • Voer de gewenste producten in A2 en A3 in. Dat zijn onze opzoekwaarden.
    • Voer de unieke delen van de genoemde bereiken in B1, C1 en D1 in.

    En nu voegen we de cel met het unieke deel (B1) samen met het gemeenschappelijke deel ("_Sales"), en voeren de resulterende tekenreeks in INDIRECT:

    INDIRECT(B$1&"_Sales")

    De INDIRECT functie zet de string om in een naam die Excel kan begrijpen, en die zet je in de tabel_array argument van VLOOKUP:

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

    De bovenstaande formule gaat naar B2, en dan kopieer je hem naar beneden en naar rechts.

    Let erop dat wij in de opzoekwaarde ($A2) de kolomcoördinaat hebben vergrendeld met een absolute celverwijzing, zodat de kolom vast blijft staan wanneer de formule naar rechts wordt gekopieerd. In de B$1-verwijzing hebben wij de rij vergrendeld omdat wij willen dat de kolomcoördinaat verandert en een passend naamdeel aan INDIRECT levert, afhankelijk van de kolom waarin de formule wordt gekopieerd:

    Als uw hoofdtabel anders is georganiseerd, de lookup-waarden in een rij en unieke delen van de namen van het bereik in een kolom, dan moet u het rijcoördinaat in de lookup-waarde (B$1) en het kolomcoördinaat in de naamdelen ($A2) vergrendelen:

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

    Formule 2. VLOOKUP en geneste IF's om meerdere bladen op te zoeken

    In situaties waarin u slechts twee of drie opzoekbladen hebt, kunt u een vrij eenvoudige VLOOKUP-formule met geneste IF-functies gebruiken om het juiste blad te selecteren op basis van de sleutelwaarde in een bepaalde cel:

    =VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,"")), 2, FALSE)

    Waarbij $A2 de opzoekwaarde is (itemnaam) en B$1 de sleutelwaarde (toestand):

    In dit geval hoeft u niet noodzakelijk namen te definiëren en kunt u externe verwijzingen gebruiken om naar een ander blad of een andere werkmap te verwijzen.

    Voor meer formulevoorbeelden, zie Hoe VLOOKUP over meerdere bladen in Excel.

    Zo gebruik je VLOOKUP in Excel. Ik dank je voor het lezen en hoop je volgende week op onze blog te zien!

    Praktijk werkboek om te downloaden

    Geavanceerde VLOOKUP-formulevoorbeelden (.xlsx-bestand)

    Michael Brown is een toegewijde technologieliefhebber met een passie voor het vereenvoudigen van complexe processen met behulp van softwaretools. Met meer dan tien jaar ervaring in de technische industrie heeft hij zijn vaardigheden in Microsoft Excel en Outlook, evenals Google Spreadsheets en Documenten aangescherpt. Michael's blog is gewijd aan het delen van zijn kennis en expertise met anderen, met eenvoudig te volgen tips en tutorials voor het verbeteren van de productiviteit en efficiëntie. Of je nu een doorgewinterde professional of een beginner bent, Michaels blog biedt waardevolle inzichten en praktisch advies om het meeste uit deze essentiële softwaretools te halen.