Zoeken in Excel met twee sleutels

In het vorige artikel hebben we gezien hoe we het onderstaande voorbeeld kunnen oplossen met VERT.ZOEKEN (Engels: VLOOKUP).

vertzoeken-twee-sleutels-re

Om VERT.ZOEKEN te gebruiken was het nodig om een extra sleutelkolom (B6:B9) toe te voegen. Echter als we de gegevens anders rangschikken, is het mogelijk om met behulp van de functie INDEX (Engels: INDEX) en VERGELIJKEN (Engels: Match) hetzelfde resultaat te bereiken zonder sleutel kolom.

De werking van deze twee functies heb ik al in een eerder artikel uitgelegd. In dit artikel zal ik laten zien hoe we het bovenstaande vraagstuk kunnen oplossen. Het zal ook duidelijk maken dat de combinatie van INDEX en VERGELIJKEN ons veel meer flexibiliteit geeft dan VERT.ZOEKEN.

Echter voordat ik de werking van de functie kan laten zien moeten eerst de gegevens op een andere manier worden gerangschikt. Het artikelnummer is afhankelijk van twee sleutels: code en lengte. We laten de code in de rijen staan, maar zetten de lengte in de kolommen. Het voorbeeld komt er dan als volgt uit te zien:

index-vergelijken-rij-kolom

De functie INDEX heeft de volgende structuur: INDEX(matrix; rij_getal; [kolom_getal]). We laten Excel nu zoeken in de matrix C7:D8. Met behulp van het rij_getal en het kolom_getal kunnen we specificeren welke cel we willen hebben. Hiervoor gebruiken we de functie VERGELIJKEN. De structuur van deze functie is VERGELIJKEN(zoekwaarde; zoeken-matrix; [criteriumtype_getal]). Het rij_getal wordt bepaald door de code. De zoekwaarde is dus de code (B3) en de bijbehorende zoek-matrix het bereik B7:B8. Met het criteriumtype_getal 0 laten we Excel zoeken naar een exacte match. Het kolomgetal geeft de lengte aan. De zoekwaarde is de lengte (C3) en de zoek-matrix het bereik C6:D6. We hebben nu de volgende bouwstenen:

  • INDEX($C$7:$D$8;rij_getal;kolom_getal)
  • voor rij_getal: VERGELIJKEN(B3;$B$7:$B$8;0)
  • voor kolom_getal: VERGELIJKEN(C3;$C$6:$D$6;0)

Combineren we dit in één formule dan krijgen we:

=INDEX($C$7:$D$8;VERGELIJKEN(B3;$B$7:$B$8;0);VERGELIJKEN(C3;$C$6:$D$6;0))

Het resultaat van de formule is te zien in cel F4. Dit voorbeeld illustreert dat we met INDEX en VERGELIJKEN tegelijkertijd een VERT.ZOEKEN en een HORIZ.ZOEKEN (Engels: HLOOKUP) kunnen uitvoeren. Bijkomend voordeel is dat door het opnieuw rangschikken van de gegevens de zoekmatrix ook nog veel compacter is.