Inhoudsopgave
De handleiding legt uit hoe Excel VLOOKUP hoofdlettergevoelig maakt, demonstreert enkele andere formules die onderscheid maken tussen hoofdletters en kleine letters, en wijst op de sterke punten en beperkingen van elke functie.
Ik denk dat elke Excel gebruiker wel weet welke functie een verticale lookup uitvoert in Excel. Juist, het is VLOOKUP. Maar heel weinig mensen weten dat Excel's VLOOKUP hoofdletterongevoelig is, wat betekent dat het kleine letters en hoofdletters als dezelfde tekens behandelt.
Hier is een snel voorbeeld dat het onvermogen van VLOOKUP aantoont om onderscheid te maken tussen hoofdletters en kleine letters. Stel dat u "bill" hebt in cel A2 en "Bill" in A4. De onderstaande formule zal "bill" vangen omdat het eerst komt in de lookup-array en een overeenkomstige waarde uit B2 teruggeven.
=VLOOKUP("Bill", A2:B4, 2, FALSE)
Verderop in dit artikel zal ik u een manier tonen om VLOOKUP hoofdlettergevoelig te maken. We zullen ook een paar andere functies verkennen die een hoofdlettergevoelige overeenkomst kunnen maken in Excel.
Hoofdlettergevoelige VLOOKUP-formule
Zoals hierboven vermeld, herkent een gebruikelijke VLOOKUP-formule de hoofdletter niet. Er is echter een manier om Excel VLOOKUP hoofdlettergevoelig te maken, zoals in onderstaand voorbeeld wordt gedemonstreerd.
Stel dat je Item ID's in kolom A en wil de prijs en het commentaar van het artikel ophalen uit de kolommen B en C. Het probleem is dat ID's zowel kleine letters als hoofdletters bevatten. Bijvoorbeeld, de waarden in A4 (001Tvci3u) en A5 (001Tvci3U) verschillen alleen in het laatste teken, respectievelijk "u" en "U".
Bij het opzoeken van "001Tvci3 U ", een standaard VLOOKUP-formule levert $90 op die is gekoppeld aan "001Tvci3 u omdat het voor "001Tvci3" komt. U "Maar dit is niet wat je wilt, toch?
=VLOOKUP(F2, A2:C7, 2, FALSE)
Om in Excel een case-sensitive lookup uit te voeren, combineren we de functies VLOOKUP, CHOOSE en EXACT:
VLOOKUP(TRUE, CHOOSE({1,2}, EXACT( lookup_waarde , lookup_array ), return_array ), 2, 0)Deze algemene formule werkt perfect in alle situaties. Je kunt zelfs opzoeken van rechts naar links Kudos aan Pouriya voor het voorstellen van deze eenvoudige en elegante oplossing!
In ons geval gaan de echte formules als volgt.
Om de prijs te trekken in F3:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), B2:B7), 2, FALSE)
Om het commentaar op te halen F4:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7), 2, FALSE)
Opmerking. In alle andere Excel-versies dan Excel 365 werkt dit alleen als een matrixformule, dus vergeet niet op Ctrl + Shift + Enter te drukken om het correct in te vullen. In Excel 365 werkt het, vanwege de ondersteuning voor dynamische matrices, ook als een gewone formule.
Hoe deze formule werkt:
Het kernstuk dat de truc doet is de CHOOSE-formule met geneste EXACT:
CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7)
Hier vergelijkt de functie EXACT de waarde in F2 met elke waarde in A2:A7 en geeft WAAR als ze precies hetzelfde zijn, inclusief het hoofdlettergebruik, en ONWAAR als dat niet het geval is:
{FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}
Voor de index_num argument van CHOOSE, gebruiken we de arrayconstante {1,2}. Het resultaat is dat de functie de logische waarden uit de bovenstaande array en de waarden uit C2:C7 combineert tot een tweedimensionale array als volgt:
{FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}
De VLOOKUP-functie neemt dat over en zoekt naar de opzoekwaarde (die TRUE is) in de 1e kolom van de 2-dimensionale matrix (voorgesteld door de logische waarden) en geeft een overeenkomst terug uit de 2e kolom, die de prijs is die we zoeken:
VLOOKUP(TRUE, {VALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}, 2, 0)
Hoofdlettergevoelige XLOOKUP-formule
Abonnees van Microsoft 365 kunnen een hoofdlettergevoelige lookup doen in Excel met een nog eenvoudiger formule. Zoals u kunt raden, heb ik het over een krachtigere opvolger van VLOOKUP - de XLOOKUP-functie.
Omdat XLOOKUP afzonderlijk werkt op opzoek- en retourarrays, hebben we de tweedimensionale array-truc uit het vorige voorbeeld niet nodig. Gebruik gewoon EXACT voor de lookup_array argument:
XLOOKUP(TRUE, EXACT( lookup_waarde , lookup_array ), return_array , "Niet gevonden")Het laatste argument ("Niet gevonden") is optioneel. Het definieert alleen welke waarde moet worden teruggegeven als er geen overeenkomst wordt gevonden. Als u het weglaat, wordt een standaard #N/A-fout teruggegeven als de formule niets vindt.
Voor onze voorbeeldtabel zijn dit de hoofdlettergevoelige XLOOKUP formules om te gebruiken.
Om de prijs in F3 te krijgen:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), B2:B7, "Niet gevonden")
Om het commentaar uit te pakken F4:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), C2:C7, "Niet gevonden")
Hoe deze formule werkt:
Net als in het vorige voorbeeld geeft EXACT een matrix van TRUE- en FALSE-waarden terug, waarbij TRUE staat voor hoofdlettergevoelige overeenkomsten. XLOOKUP zoekt in de bovenstaande matrix naar de TRUE-waarde en geeft een overeenkomst terug van de return_array Let op, als er twee of meer exact dezelfde waarden in de opzoekkolom staan (inclusief het hoofdlettergebruik), geeft de formule de eerst gevonden overeenkomst terug.
XLOOKUP beperking : alleen beschikbaar in Excel 365 en Excel 2021.
SUMPRODUCT - hoofdlettergevoelige opzoeking om overeenkomende nummers terug te geven
Zoals u begrijpt uit de titel, is SUMPRODUCT weer een andere Excel-functie die een hoofdlettergevoelige lookup kan doen, maar het kan het volgende opleveren numerieke waarden Als dit niet het geval is, ga dan naar het INDEX MATCH voorbeeld dat een oplossing biedt voor alle gegevenstypen.
Zoals u waarschijnlijk weet, vermenigvuldigt Excel's SUMPRODUCT componenten in de opgegeven matrices en geeft de som van de producten terug. Aangezien we een hoofdlettergevoelige lookup willen, gebruiken we de functie EXACT om de eerste matrix te krijgen:
=SUMPRODUCT((EXACT(A2:A7,F2) * (B2:B7))
Helaas kan de SUMPRODUCT-functie geen tekstovereenkomsten opleveren omdat tekstwaarden niet kunnen worden vermenigvuldigd. In dit geval krijgt u een #VALUE! foutmelding zoals in cel F4 in de onderstaande schermafbeelding:
Hoe deze formule werkt:
Net als in het VLOOKUP-voorbeeld controleert de functie EXACT de waarde in F2 met alle waarden in A2:A7 en geeft TRUE terug voor hoofdlettergevoelige overeenkomsten, anders FALSE:
SUMPRODUCT(({FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}*{155;186;90;54;159;28}))
In de meeste formules evalueert Excel TRUE tot 1 en FALSE tot 0. Dus wanneer SUMPRODUCT de elementen van de twee matrices op dezelfde posities met elkaar vermenigvuldigt, worden alle niet-matches (FALSE) nullen:
SUMPRODUCT({0;0;0;54;0;0})
Als resultaat geeft de formule een getal uit kolom B dat overeenkomt met de exacte hoofdlettergevoelige overeenkomst in kolom A.
SUMPRODUCT-beperking : kan alleen numerieke waarden teruggeven.
INDEX MATCH - hoofdlettergevoelig opzoeken voor alle gegevenstypen
Eindelijk zijn we dicht bij een onbeperkt hoofdlettergevoelige opzoekformule die werkt in alle Excel-versies en op alle gegevenssets.
Dit voorbeeld komt als laatste, niet alleen omdat het beste voor het laatste wordt bewaard, maar ook omdat de kennis die u in de vorige voorbeelden hebt opgedaan u kan helpen de hoofdlettergevoelige MATCH INDEX-formule beter te begrijpen.
De combinatie van de functies INDEX en MATCH wordt in Excel vaak gebruikt als een flexibeler en veelzijdiger alternatief voor VLOOKUP. Het volgende artikel legt goed uit (hopelijk :) hoe deze twee functies samenwerken - INDEX MATCH gebruiken in plaats van VLOOKUP.
Hier zal ik alleen de belangrijkste punten in herinnering brengen:
- De MATCH functie zoekt naar de lookup waarde in de gespecificeerde lookup array en geeft de relatieve positie terug.
- De relatieve positie van de lookup-waarde gaat rechtstreeks naar de rij_nummer argument van de INDEX-functie om een waarde van die rij terug te geven.
Om de formule tekstgevallen te laten herkennen, hoeft u slechts één extra functie toe te voegen aan de klassieke combinatie INDEX MATCH. Uiteraard heeft u weer de functie EXACT nodig:
INDEX( return_array , MATCH(TRUE, EXACT( lookup_waarde , lookup_array ), 0))De echte formule in F3 is:
=INDEX(B2:B7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
In F4 gebruiken we deze:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Vergeet niet dat het alleen werkt als een matrixformule in alle andere versies dan Excel 365, dus zorg ervoor dat u het invoert door de toetsen Ctrl + Shift + Enter tegelijk in te drukken. Als u het goed doet, wordt de formule omsloten door accolades zoals in de schermafbeelding hieronder:
Hoe deze formule werkt:
Zoals in alle voorgaande voorbeelden geeft EXACT TRUE terug voor elke waarde in A2:A7 die exact overeenkomt met de waarde in F2. Aangezien we TRUE gebruiken voor de lookup_waarde van MATCH, geeft het een relatieve positie van de exacte hoofdlettergevoelige overeenkomst, wat precies is wat INDEX nodig heeft om een overeenkomst van B2:B7 terug te geven.
Geavanceerde hoofdlettergevoelige opzoekformule
De bovengenoemde INDEX MATCH formule ziet er perfect uit, toch? Maar in feite is het dat niet. Ik zal u laten zien waarom.
Stel dat een cel in de retourkolom die overeenkomt met de opzoekwaarde leeg is. Wat zal de formule teruggeven? Niets. En nu, laten we eens kijken wat het werkelijk teruggeeft:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Oeps, de formule geeft een nul terug! Misschien is het niet echt belangrijk als je alleen met tekstwaarden werkt. Maar als je werkblad getallen bevat en sommige daarvan echte nullen zijn, is dit een probleem.
In werkelijkheid gedragen alle andere eerder besproken opzoekformules zich op dezelfde manier. Maar nu wilt u toch een onberispelijke formule?
Om de hoofdlettergevoelige INDEX MATCH formule helemaal perfect te maken, verpakt u deze in de IF-functie die controleert of een retourcel leeg is en in dat geval niets teruggeeft:
=IF(INDIRECT("C"&(1+MATCH(TRUE,EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "")
In de bovenstaande formule:
- "C" is de retourkolom.
- "1" is het getal dat een relatieve positie van de cel die door de MATCH-functie wordt geretourneerd in een echt celadres .
Bijvoorbeeld, de lookup array in onze MATCH functie is A2:A7, wat betekent dat de relatieve positie van cel A2 "1" is, omdat dit de eerste cel in de array is. Maar in werkelijkheid begint de lookup array in rij 2. Om het verschil te compenseren, voegen we 1 toe, zodat de INDIRECT functie een waarde uit de juiste cel teruggeeft.
De onderstaande screenshots tonen de verbeterde hoofdlettergevoelige INDEX MATCH formule in actie.
Indien de retourcel leeg is, geeft de formule niets weer (een lege tekenreeks):
Als de retourcel een nul bevat, geeft de formule 0 terug:
Als u liever een bericht weergeeft wanneer een retourcel leeg is, vervangt u een lege tekenreeks ("") in het laatste argument van IF door wat tekst:
=IF(INDIRECT("C"&(1+MATCH(TRUE, EXACT(A2:A7, F2), 0))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "Er is niets om terug te geven, sorry.")
Doe hoofdlettergevoelige VLOOKUP op een gemakkelijke manier
De gebruikers van onze Ultimate Suite voor Excel hebben een speciale tool die het opzoeken in grote en complexe tabellen gemakkelijker en stressvrij maakt. Het beste is dat Twee Tabellen Samenvoegen een hoofdlettergevoelige optie heeft, en het onderstaande voorbeeld toont het in actie.
Stel dat u Qty. uit de Kijk op tafel naar de Hoofd tabel op basis van unieke Item ID's:
Wat u doet is de wizard Tabellen samenvoegen uitvoeren en deze stappen uitvoeren:
- Selecteer de hoofdtabel waarin nieuwe gegevens moeten worden opgenomen.
- Selecteer de opzoektabel waar de nieuwe gegevens moeten worden gezocht.
- Kies een of meer sleutelkolommen (in ons geval Item ID). En zorg ervoor dat u de Case-sensitive matching doos.
Even later krijg je het gewenste resultaat :)
Dat is hoe je in Excel kunt opzoeken, rekening houdend met de tekstcase. Ik dank je voor het lezen en hoop je volgende week op onze blog te zien!
Praktijk werkboek om te downloaden
Hoofdlettergevoelige VLOOKUP voorbeelden (.xlsx bestand)