Inhoudsopgave
De tutorial toont een paar verschillende formules om tweedimensionale lookup in Excel uit te voeren. Bekijk de alternatieven en kies uw favoriet :)
Wanneer u iets zoekt in uw Excel-spreadsheets, zoekt u meestal verticaal in kolommen of horizontaal in rijen. Maar soms moet u zowel in rijen als in kolommen zoeken. Met andere woorden, u probeert een waarde te vinden op het snijpunt van een bepaalde rij en kolom. Dit wordt genoemd matrixopzoeking (aka 2-dimensionaal of 2-wegs lookup ), en deze handleiding laat zien hoe je dat op 4 verschillende manieren doet.
Excel INDEX MATCH MATCH formule
De populairste manier om in Excel in twee richtingen te zoeken is door gebruik te maken van INDEX MATCH MATCH. Dit is een variant van de klassieke INDEX MATCH formule waaraan u nog een MATCH functie toevoegt om zowel de rij- als de kolomnummers te krijgen:
INDEX ( data_array , MATCH ( vlookup_waarde , lookup_column_range , 0), MATCH ( hlookup waarde , lookup_row_range , 0))Laten we als voorbeeld een formule maken om de populatie van een bepaald dier in een bepaald jaar uit de onderstaande tabel te halen. Om te beginnen definiëren we alle argumenten:
- Gegevens_array - B2:E4 (gegevenscellen, rij- en kolomkoppen niet inbegrepen)
- Vlookup_waarde - H1 (doeldier)
- Lookup_column_range - A2:A4 (rijtitels: dierennamen) - A3:A4
- Hlookup_waarde - H2 (streefjaar)
- Lookup_row_range - B1:E1 (kolomkoppen: jaren)
Voeg alle argumenten samen en je krijgt deze formule voor het opzoeken in twee richtingen:
=INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))
Hoe deze formule werkt
Hoewel het er op het eerste gezicht misschien wat ingewikkeld uitziet, is de logica van de formule echt eenvoudig en gemakkelijk te begrijpen. De INDEX-functie haalt een waarde uit de gegevensarray op basis van de rij- en kolomnummers, en twee MATCH-functies leveren die nummers:
INDEX(B2:E4, rij_getal, kolom_getal)
Hier maken we gebruik van de mogelijkheid van MATCH(lookup_value, lookup_array, [match_type]) om een relatieve positie van lookup_waarde in lookup_array .
Dus, om het rijnummer te krijgen, zoeken we naar het betrokken dier (H1) in de rijtitels (A2:A4):
MATCH(H1, A2:A4, 0)
Om het kolomnummer te krijgen, zoeken we het doeljaar (H2) in de kolomkoppen (B1:E1):
MATCH(H2, B1:E1, 0)
In beide gevallen zoeken we naar een exacte overeenkomst door het 3e argument op 0 te zetten.
In dit voorbeeld levert de eerste MATCH 2 op omdat onze vlookup-waarde (IJsbeer) wordt gevonden in A3, de tweede cel van A2:A4. De tweede MATCH levert 3 op omdat de hlookup-waarde (2000) wordt gevonden in D1, de derde cel van B1:E1.
Gezien het bovenstaande komt de formule neer op:
INDEX(B2:E4, 2, 3)
En geef een waarde terug op het snijpunt van de 2e rij en de 3e kolom in de gegevensmatrix B2:E4, dat is een waarde in de cel D3.
VLOOKUP- en MATCH-formule voor 2-wegs lookup
Een andere manier om in Excel een tweedimensionale lookup te doen is door gebruik te maken van een combinatie van de functies VLOOKUP en MATCH:
VLOOKUP( vlookup_waarde , tabel_array , MATCH( hlookup_waarde , lookup_row_range , 0), FALSE)Voor onze voorbeeldtabel ziet de formule er als volgt uit:
=VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)
Waar:
- Tabel_array - A2:E4 (gegevenscellen inclusief rijtitels)
- Vlookup_waarde - H1 (doeldier)
- Hlookup_waarde - H2 (streefjaar)
- Lookup_row_range - A1:E1 (kolomkoppen: jaren)
Hoe deze formule werkt
De kern van de formule is de VLOOKUP-functie, geconfigureerd voor exacte overeenkomst (laatste argument ingesteld op FALSE), die zoekt naar de opzoekwaarde (H1) in de eerste kolom van de tabelarray (A2:E4) en een waarde teruggeeft uit een andere kolom in dezelfde rij. Om te bepalen uit welke kolom een waarde moet worden teruggegeven, gebruikt u de functie MATCH, die ook is geconfigureerd voor exacte overeenkomst (laatste argument ingesteld op 0):
MATCH(H2, A1:E1, 0)
MATCH zoekt naar de waarde in H2 over de kolomkoppen (A1:E1) en geeft de relatieve positie van de gevonden cel terug. In ons geval wordt het doeljaar (2010) gevonden in E1, dat de 5e is in de opzoek-array. Dus het getal 5 gaat naar de col_index_num argument van VLOOKUP:
VLOOKUP(H1, A2:E4, 5, FALSE)
VLOOKUP neemt het over, vindt een exacte match voor zijn opzoekwaarde in A2 en geeft een waarde terug uit de 5e kolom in dezelfde rij, dat is de cel E2.
Belangrijke opmerking! Om de formule correct te laten werken, tabel_array (A2:E4) van VLOOKUP en lookup_array van MATCH (A1:E1) moet hetzelfde aantal kolommen hebben, anders moet het aantal dat door MATCH wordt doorgegeven aan col_index_num zal onjuist zijn (komt niet overeen met de positie van de kolom in tabel_array ).
XLOOKUP-functie om in rijen en kolommen te kijken
Onlangs heeft Microsoft nog een functie in Excel geïntroduceerd die alle bestaande opzoekfuncties zoals VLOOKUP, HLOOKUP en INDEX MATCH moet vervangen. XLOOKUP kan onder meer kijken naar het snijpunt van een specifieke rij en kolom:
XLOOKUP( vlookup_waarde , vlookup_column_range , XLOOKUP( hlookup_waarde , hlookup_row_range , data_array ))Voor onze voorbeeldgegevens gaat de formule als volgt:
=XLOOKUP(H1, A2:A4, XLOOKUP(H2, B1:E1, B2:E4))
Opmerking. Momenteel is XLOOKUP een bètafunctie, die alleen beschikbaar is voor Office 365-abonnees die deel uitmaken van het Office Insiders-programma.
Hoe deze formule werkt
De formule gebruikt de mogelijkheid van XLOOKUP om een hele rij of kolom terug te geven. De binnenste functie zoekt naar het doeljaar in de header-rij en geeft alle waarden voor dat jaar terug (in dit voorbeeld voor het jaar 1980). Die waarden gaan naar de return_array argument van de buitenste XLOOKUP:
XLOOKUP(H1, A2:A4, {22000;25000;700}))
De buitenste XLOOKUP-functie zoekt het doeldier in de kolomkoppen en retourneert de waarde op dezelfde positie uit de return_array.
SUMPRODUCT-formule voor lookup in twee richtingen
De SUMPRODUCT-functie is als een Zwitsers mes in Excel - zij kan zo veel dingen doen buiten haar eigenlijke doel, vooral wanneer het erom gaat meerdere criteria te evalueren.
Om twee criteria op te zoeken, in rijen en kolommen, gebruikt u deze algemene formule:
SUMPRODUCT( vlookup_column_range = vlookup_waarde ) * ( hlookup_row_range = hlookup_waarde ), data_array )Om een 2-wegs lookup in onze dataset uit te voeren, gaat de formule als volgt:
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2), B2:E4)
De onderstaande syntaxis werkt ook:
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2) * B2:E4)
Hoe deze formule werkt
In het hart van de formule vergelijken we twee opzoekwaarden met de rij- en kolomkoppen (het doeldier in H1 met alle diernamen in A2:A4 en het doeljaar in H2 met alle jaren in B1:E1):
(A2:A4=H1) * (B1:E1=H2)
Dit resulteert in 2 matrices van TRUE- en FALSE-waarden, waarbij TRUE's overeenkomsten weergeven:
{FALSE;FALSE;TRUE} * {FALSE,TRUE,FALSE,FALSE}
De vermenigvuldiging zet de waarden TRUE en FALSE om in 1's en 0's en produceert een tweedimensionale matrix van 4 kolommen en 3 rijen (rijen worden gescheiden door puntkomma's en elke kolom met gegevens door een komma):
{0,0,0,0;0,0,0,0;0,1,0,0}
De SUMPRODUCT-functies vermenigvuldigen de elementen van de bovenstaande matrix met de items van B2:E4 op dezelfde posities:
{0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}
En omdat vermenigvuldigen met nul nul oplevert, blijft alleen het item dat overeenkomt met 1 in de eerste matrix over:
SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})
Tenslotte telt SUMPRODUCT de elementen van de resulterende matrix op en geeft een waarde van 2000.
Opmerking. Als uw tabel meer dan één rij en/of kolomkop met dezelfde naam heeft, zal de uiteindelijke matrix meer dan één getal anders dan nul bevatten, en zullen al die getallen worden opgeteld. Als resultaat krijgt u een som van waarden die aan beide criteria voldoen. Dit is wat de SUMPRODUCT-formule onderscheidt van INDEX MATCH MATCH en VLOOKUP, die de eerst gevonden overeenkomst teruggeven.
Matrixopzoeking met genoemde bereiken (expliciete kruising)
Nog een verbazingwekkend eenvoudige manier om in Excel een matrix op te zoeken is door gebruik te maken van naambereiken. Hier wordt uitgelegd hoe:
Deel 1: Kolommen en rijen benoemen
De snelste manier om elke rij en elke kolom in uw tabel een naam te geven is deze:
- Selecteer de hele tabel (A1:E4 in ons geval).
- Op de Formules tabblad, in de Gedefinieerde namen groep, klik Maken uit selectie of druk op de sneltoets Ctrl + Shift + F3.
- In de Namen maken uit selectie dialoogvenster, selecteer Bovenste rij en Linker kolom, en klik op OK.
Dit creëert automatisch namen op basis van de rij- en kolomkoppen. Er zijn echter een paar voorbehouden:
- Indien de koppen van uw kolommen en/of rijen getallen zijn of specifieke tekens bevatten die niet zijn toegestaan in Excel-namen, worden de namen voor dergelijke kolommen en rijen niet gemaakt. Om een lijst van gemaakte namen te zien, opent u Naambeheer ( Ctrl + F3 ). Indien sommige namen ontbreken, definieert u deze handmatig zoals uitgelegd in Hoe een bereik een naam geven in Excel.
- Als sommige van uw rij- of kolomkoppen spaties bevatten, worden de spaties vervangen door bijvoorbeeld underscores, Polar_bear .
Voor onze voorbeeldtabel heeft Excel automatisch alleen de rijnamen gemaakt. De kolomnamen moeten handmatig worden gemaakt omdat de kolomkoppen getallen zijn. Om dit te ondervangen, kunt u de getallen eenvoudigweg vooraf laten gaan door underscores, zoals _1990 .
Het resultaat is dat we de volgende reeksen namen hebben:
Deel 2: Maak een matrixopzoekformule
Om een waarde op te halen op het snijpunt van een bepaalde rij en kolom, typt u een van de volgende algemene formules in een lege cel:
= rij_naam kolom_naamOf andersom:
= kolom_naam rij_naamBijvoorbeeld, om de populatie blauwe vinvissen in 1990 te krijgen, is de formule zo simpel als:
=Blue_whale _1990
Als iemand meer gedetailleerde instructies nodig heeft, zullen de volgende stappen u door het proces leiden:
- Typ het gelijkheidsteken (=) in een cel waar het resultaat moet verschijnen.
- Begin met het typen van de naam van de doelrij, bijvoorbeeld, Blue_whale Nadat u een paar tekens hebt getypt, toont Excel alle bestaande namen die overeenkomen met uw invoer. Dubbelklik op de gewenste naam om deze in uw formule in te voeren:
- Typ na de rijnaam een ruimte die werkt als de snijoperator in dit geval.
- Voer de naam van de doelkolom in ( _1990 in ons geval).
- Zodra zowel de rij- als de kolomnaam zijn ingevoerd, markeert Excel de corresponderende rij en kolom in uw tabel, en drukt u op Enter om de formule te voltooien:
Het opzoeken van de matrix is klaar, en het onderstaande screenshot toont het resultaat:
Dat is hoe je in rijen en kolommen kunt opzoeken in Excel. Ik dank u voor het lezen en hoop u volgende week op onze blog te zien!
Beschikbare downloads
2-dimensionale lookup voorbeeld werkmap