Excel-formule: exact zoeken naar overeenkomsten met INDEX en MATCH -

Inhoudsopgave

Generieke formule

(=INDEX(data,MATCH(TRUE,EXACT(val,lookup_col),0),col_num))

Samenvatting

Hoofdlettergevoelig opzoeken

Standaardzoekopdrachten met VERT.ZOEKEN of INDEX + VERGELIJKEN zijn standaard niet hoofdlettergevoelig. Zowel VERT.ZOEKEN als VERGELIJKEN zullen eenvoudig de eerste overeenkomst retourneren, waarbij hoofdletters / kleine letters worden genegeerd.

Als u echter hoofdlettergevoelig moet zoeken, kunt u dit doen met een matrixformule die INDEX, MATCH en de EXACT-functie gebruikt.

In het voorbeeld gebruiken we de volgende formule

(=INDEX(data,MATCH(TRUE,EXACT(F4,B3:B102),0),3))

Deze formule is een matrixformule en moet worden ingevoerd met Control + Shift + Enter.

Uitleg

Omdat MATCH alleen niet hoofdlettergevoelig is, hebben we een manier nodig om Excel de case te laten vergelijken. De EXACTE functie is hiervoor de perfecte functie, maar de manier waarop we deze gebruiken is een beetje ongebruikelijk, omdat we een cel moeten vergelijken met een reeks cellen.

Als we van binnen naar buiten werken, hebben we eerst:

EXACT(F4,B3:B102)

waarbij F4 de opzoekwaarde bevat en B3: B102 een verwijzing naar de opzoekkolom (Voornamen). Omdat we EXACT een array als tweede argument geven, krijgen we een array van TRUE false-waarden als volgt terug:

(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, etc.)

Dit is het resultaat van het vergelijken van de waarde in B4 met elke cel in de opzoekkolom. Waar we TRUE ook zien, we weten dat we een exacte match hebben die de zaak respecteert.

Nu moeten we de positie (dat wil zeggen rijnummer) van de TRUE-waarde in deze array krijgen. Hiervoor kunnen we MATCH gebruiken, zoeken naar TRUE en instellen in de exacte match-modus:

MATCH(TRUE,EXACT(F4,B3:B102),0)

Het is belangrijk op te merken dat MATCH altijd de eerste overeenkomst retourneert als er duplicaten zijn, dus als er toevallig nog een exacte overeenkomst in de kolom staat, komt u alleen overeen met de eerste.

Nu hebben we een rijnummer. Vervolgens hoeven we alleen INDEX te gebruiken om de waarde op de rechter rij- en kolomkruising op te halen. Het kolomnummer in dit geval hard-gecodeerd 3, aangezien het benoemde bereik data omvat alle kolommen. De uiteindelijke formule is:

(=INDEX(data,MATCH(TRUE,EXACT(F4,B3:B102),0),3))

We moeten deze formule invoeren als een matrixformule vanwege de matrix gemaakt door EXACT.

Deze formule haalt zowel tekst- als numerieke waarden op. Als u alleen getallen wilt ophalen, kunt u een formule gebruiken die is gebaseerd op SOMPRODUCT; zie onderstaande link

Interessante artikelen...