Cursus
Je hebt vast weleens gehoord van VLOOKUP(). Het is een van de bekendste functies in Excel (zo niet dé bekendste). En zodra je doorhebt hoe het werkt, ga je het graag gebruiken omdat het een berucht lastig en tijdrovend probleem oplost. VLOOKUP is eigenlijk Microsofts manier om je een hoop tijd terug te geven.
In dit artikel ontrafel ik hoe VLOOKUP() werkt en neem ik je mee langs de meest voorkomende toepassingen. En je kunt altijd later naar dit artikel terugkomen als je een van de argumenten even kwijt bent.
Wat doet VLOOKUP()?
Nu ik het kader heb geschetst, kijken we wat VLOOKUP() nu eigenlijk doet.
Kort gezegd zoekt VLOOKUP() naar een waarde in de eerste kolom van een tabel (of celbereik) en geeft het een waarde terug uit een andere kolom in dezelfde rij.
Zie het als de vraag: "Vind dit item in mijn lijst, en geef me iets anders uit dezelfde rij."
Er zijn vier belangrijke argumenten die je elke keer gebruikt:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
-
lookup_value: De waarde waar je naar wilt zoeken. -
table_array: Het celbereik met je data (inclusief zowel de kolom waarin je zoekt als de kolom(men) met de terug te geven waarde). -
col_index_num: Het kolomnummer (beginnend bij1voor de meest linkse) in detable_arraywaaruit je de waarde wilt ophalen. -
[range_lookup]: Optioneel. VoerFALSEin voor een exacte overeenkomst (dit wil je meestal), ofTRUEvoor een benaderende overeenkomst.
VLOOKUP() is een functie waarbij je de argumenten echt moet begrijpen. Niet alle functies zijn zo, maar VLOOKUP() zeker wel.
Excel VLOOKUP() basisvoorbeeld
Laten we VLOOKUP() aan het werk zetten. Stel, je hebt een eenvoudige tabel met producten en prijzen, zoals deze:

Stel dat je de prijs van een banaan wilt weten. Dan gebruik je:
=VLOOKUP("Banana", A2:B4, 2, FALSE)
-
"Banana"is de waarde waar je naar zoekt. -
A2:B4is het databereik. -
2vertelt Excel dat het de waarde uit de tweede kolom moet teruggeven, namelijk Price. -
FALSEbetekent dat je een exacte overeenkomst wilt. (Hier kom ik later uitgebreider op terug. Dit argument is het meest verwarrend.)
Deze formule geeft $0.30 terug.
De waarde hardcoden is niet altijd ideaal, en dat brengt ons bij het volgende punt:
VLOOKUP() met celverwijzingen in plaats van hardcoden
In het vorige voorbeeld heb ik de zoekwaarde hardgecodeerd. In de praktijk wil je vaak naar een cel verwijzen. Zo wordt je formule dynamisch en herbruikbaar. Als je bijvoorbeeld "Orange" in cel D2 zet, kun je gebruiken:

=VLOOKUP(D2, A2:B4, 2, FALSE)
Telkens wanneer je de waarde in D2 verandert, haalt de formule de bijbehorende prijs op en hoef je de formule zelf niet aan te passen.
VLOOKUP() met exacte vs. benaderende overeenkomst
Misschien vraag je je nu af over dat vierde argument, [range_lookup]. Soms maakt het niet uit, maar andere keren heeft het een grote impact op je resultaten. De vuistregel is dat je meestal FALSE wilt voor een exacte overeenkomst.
-
Gebruik
FALSEvoor dingen als namen, id's of productcodes waarbij je een exacte overeenkomst nodig hebt. -
Gebruik
TRUEvoor bereiken (denk aan belastingschijven of beoordelingsschalen) waarbij je de dichtstbijzijnde waarde wilt zonder eroverheen te gaan. Onthoud wel (en dit is ook belangrijk): je zoekkolom moet oplopend gesorteerd zijn als jeTRUEgebruikt.
Laten we een voorbeeld van een benaderende overeenkomst bekijken:
Stel, je hebt deze tabel met belastingtarieven:

Als je inkomen $15,000 is:
=VLOOKUP(15000, A2:B4, 2, TRUE)
Excel zoekt de dichtstbijzijnde waarde die kleiner dan of gelijk aan 15000 is (dat is 10000) en geeft 15% terug.
Maar nogmaals, voor de meeste zoekopdrachten houd je het bij FALSE.
Veelvoorkomende valkuilen en beperkingen
Zoals bij alles heeft VLOOKUP() beperkingen, zodat je later niet voor verrassingen komt te staan. Dit zijn een paar dingen om op te letten:
-
Zoekt alleen van links naar rechts. Dit is de grote beperking die te binnen schiet.
VLOOKUP()zoekt altijd in de eerste kolom van jetable_arrayen geeft data terug uit kolommen rechts daarvan. Als je naar links moet opzoeken, heb je een andere aanpak nodig. -
Kolomnummer is statisch. Als je kolommen in je tabel invoegt of verwijdert, kan de
col_index_numnaar de verkeerde kolom gaan wijzen. Soms merk je dat doordat er een hele kolom met#N/A-fouten verschijnt, maar soms is het lastiger te zien. -
Kan traag zijn op grote datasets. Bij zeer grote tabellen kan er echt merkbaar prestatieverlies zijn. Als je de gezochte waarde hebt gevonden en de lookup niet dynamisch hoeft te blijven, kun je Kopiëren > Plakken speciaal gebruiken om je werkmap lichter te maken.
Als je tegen deze issues aanloopt, overweeg dan alternatieven zoals INDEX()+MATCH(), of de nieuwere functie XLOOKUP() (als die beschikbaar is in jouw Excel-versie). (Verderop help ik je de verschillen tussen deze functies te ontrafelen.)
Je VLOOKUP()s flexibeler maken
Nu je de basis beheerst, maken we je VLOOKUP()-formules flexibeler en makkelijker te beheren. Een goede tip is om benoemde bereiken te gebruiken. Selecteer bijvoorbeeld A2:B4, typ "ProductTable" in wat bekendstaat als het Naam-vak, en nu kan je formule naar die naam verwijzen:
=VLOOKUP(D2, ProductTable, 2, FALSE)
Zo worden je formules veel beter leesbaar en makkelijker te onderhouden, vooral als je tabellen verplaatst.
VLOOKUP()-fouten netjes afhandelen
Soms kan VLOOKUP() de gezochte waarde niet vinden, wat resulteert in een #N/A-fout. Om het netter te maken en je spreadsheet gebruiksvriendelijker te maken, kun je IFERROR() gebruiken om die fouten op te vangen:
=IFERROR(VLOOKUP(D2, ProductTable, 2, FALSE), "Not found")
Zo worden ontbrekende waarden weergegeven als "Not found" in plaats van als de foutmelding, die er wat rommelig uitziet.
VLOOKUP() vs. INDEX()/MATCH() vs. XLOOKUP()
Ik hintte eerder al op alternatieve functies.
INDEX() en MATCH() samen worden vaak aangeraden, en wel hierom:
-
INDEX()/MATCH()laat je in elke richting opzoeken, niet alleen naar rechts, wat een grote beperking is vanVLOOKUP()die ik eerder noemde. -
Je zoekkolom hoeft niet de eerste kolom in het bereik te zijn.
-
Kolommen invoegen of verwijderen breekt je formule niet.
En zo verhoudt XLOOKUP() zich tot VLOOKUP():
-
XLOOKUP()vervangt zowelVLOOKUP()alsINDEX()/MATCH()door hun functionaliteit te combineren in één, meer intuïtieve formule. -
Je kunt naar links, rechts, boven of beneden opzoeken.
-
De zoekkolom hoeft niet op een vaste plek te staan.
-
Je kunt een fallbackwaarde instellen als er niets wordt gevonden, zodat je de gevreesde
#N/Avermijdt zonder dieIFERROR()-oplossing die ik eerder liet zien.
Een paar tips en sneltoetsen
Op basis van alles wat we hebben behandeld, hier wat handige VLOOKUP()-tips:
-
Absolute verwijzingen: Als je je formule naar beneden kopieert, vergrendel je
table_arraymet$-tekens (bijv.$A$2:$B$100) om het bereik constant te houden. -
Sorteren: Voor benaderende overeenkomsten (met
TRUE) moet je zoekkolom oplopend gesorteerd zijn. -
Gedeeltelijke overeenkomsten:
VLOOKUP()ondersteunt niet rechtstreeks wildcards voor gedeeltelijke overeenkomsten, tenzij jeTRUEgebruikt voorrange_lookupof creatieve workarounds toepast.
Conclusie
We hebben meer goede tutorials over specifieke VLOOKUP()-usecases. Lees onze collectie:
- VLOOKUP() vanaf een ander werkblad: een how-to in Excel
- Hoe je een VLOOKUP() met meerdere criteria doet
- Hoe je VLOOKUP() combineert met IF() in Excel
Voor een gestructureerd leerpad, om dit alles beter te plaatsen en je skills echt te verbeteren, schrijf je in voor onze cursussen Data Analysis in Excel en Advanced Excel Functions. Dat is echt de beste manier om je in Excel te blijven ontwikkelen.

Ik ben een schrijver en editor op het gebied van data science en heb bijgedragen aan onderzoeksartikelen in wetenschappelijke tijdschriften. Ik ben vooral geïnteresseerd in lineaire algebra, statistiek, R en dergelijke. Ik speel ook best wat schaak!
