Ynhâldsopjefte
De tutorial ferklearret hoe't jo Excel VLOOKUP haadlettergefoelich meitsje kinne, toant in pear oare formules dy't tekstfallen ûnderskiede, en wiist de sterke en beheiningen fan elke funksje oan.
Ik tink dat elk Excel-brûker wit hokker funksje in fertikale opsykje yn Excel útfiert. Rjocht, it is VLOOKUP. Hiel pear minsken binne lykwols bewust dat Excel's VLOOKUP net-gefoelige is, wat betsjuttet dat it lytse letters en HOOFDLETTERS as deselde tekens behannelet.
Hjir is in fluch foarbyld dat it ûnfermogen fan VLOOKUP oantoand om tekstfallen te ûnderskieden. Stel as jo "bill" hawwe yn sel A2 en "Bill" yn A4. De ûndersteande formule sil "bill" fange, om't it earst komt yn 'e opsykmasjine en jout in oerienkommende wearde fan B2.
=VLOOKUP("Bill", A2:B4, 2, FALSE)
Fierder yn dizze artikel, sil ik jo in manier sjen litte om VLOOKUP case-sensitive te meitsjen. Wy sille ek in pear oare funksjes ferkenne dy't in haadlettergefoelige wedstriid dwaan kinne yn Excel.
Hoofdlettergefoelige VLOOKUP-formule
Lykas hjirboppe neamd, in gewoane VLOOKUP-formule herkent de letterkast net. D'r is lykwols in manier om Excel VLOOKUP case-sensitive te meitsjen, lykas oantoand yn it hjirûnder foarbyld.
Stel dat jo Item ID's hawwe yn kolom A en wolle de priis en opmerking fan it item lûke út kolommen B en C. It probleem is dat IDs befetsje sawol lytse letters as haadletters. Bygelyks, de wearden yn A4 (001Tvci3u) en A5 (001Tvci3U) ferskille allinich ynit lêste karakter, respektivelik "u" en "U".
By it opsykjen fan "001Tvci3 U ", jout in standert VLOOKUP-formule $90 út dy't ferbûn is mei "001Tvci3 u " om't it foar "001Tvci3 U " komt yn 'e opsykarray. Mar dit is net wat jo wolle, toch?
=VLOOKUP(F2, A2:C7, 2, FALSE)
Om in haadlettergefoelige opsykje yn Excel út te fieren, kombinearje wy de VLOOKUP, COOSE en EXACT funksjes:
VLOOKUP(TRUE, CHOOSE({1,2}, EXACT( opsykwearde, sykje_array), return_array), 2, 0)Dizze generike formule wurket perfekt yn alle situaasjes. Jo kinne sels fan rjochts nei lofts opsykje, iets dat in gewoane VLOOKUP-formule net kin. Kudos oan Pouriya foar it suggerearjen fan dizze ienfâldige en elegante oplossing!
Yn ús gefal geane de echte formules as folget.
Om de priis yn F3 te lûken:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), B2:B7), 2, FALSE)
Om de opmerking F4 op te heljen:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7), 2, FALSE)
Opmerking. Yn alle Excel-ferzjes oars as Excel 365 wurket dit allinich as in arrayformule, dus tink om te drukken op Ctrl + Shift + Enter om it korrekt te foltôgjen. Yn Excel 365, troch stipe foar dynamyske arrays, wurket it ek as in reguliere formule.
Hoe't dizze formule wurket:
It kearndiel dat de trúk docht is de CHOOSE-formule mei geneste EXACT:
CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7)
Hjir, de EKAKTE funksje fergeliket de wearde yn F2 tsjin elke wearde yn A2: A7 en jout TRUE werom as se krekt itselde binne ynklusyf de letterkast,FALSE oars:
{FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}
Foar it index_num argumint fan CHOOSE brûke wy de arraykonstante {1,2}. As resultaat kombinearret de funksje de logyske wearden fan 'e boppesteande array en de wearden fan C2: C7 yn in twadiminsjonale array lykas dit:
{FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}
De funksje VLOOKUP nimt it dêrwei en siket nei de opsykwearde (dy't TRUE is) yn 'e 1e kolom fan' e 2-diminsjonale array (fertsjintwurdige troch de logyske wearden) en jout in wedstriid werom út 'e 2e kolom, dat is de priis dy't wy sykje:
VLOOKUP(TRUE, {FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}, 2, 0)
Hoofdlettergefoelige XLOOKUP-formule
Microsoft 365-abonnees kinne in saakgefoelige opsykje dwaan yn Excel mei sels in ienfâldiger formule. Sa't jo kinne riede, haw ik it oer in krêftiger opfolger fan VLOOKUP - de XLOOKUP-funksje.
Om't XLOOKUP wurket op syk- en return-arrays apart, hawwe wy de twadiminsjonale array-trick fan 'e foarige net nedich foarbyld. Brûk gewoan EXACT foar it argumint lookup_array :
XLOOKUP(TRUE, EXACT( lookup_value , lookup_array ), return_array , " Net fûn")It lêste argumint ("Net fûn") is opsjoneel. It definiearret gewoan hokker wearde weromkomt as der gjin oerienkomst wurdt fûn. As jo it weilitte, dan sil in standert #N/A flater weromjûn wurde foar it gefal dat de formule neat fynt.
Foar ús foarbyldtabel binne dit de haadlettergefoelige XLOOKUP-formules dy't jo brûke kinne.
Om de priis yn F3 te krijen:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), B2:B7, "Not found")
Om deopmerking F4:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), C2:C7, "Not found")
Hoe wurket dizze formule:
Lykas yn it foarige foarbyld jout EXACT werom in array fan TRUE en FALSE wearden, dêr't TRUE stiet foar haadlettergefoelige wedstriden. XLOOKUP siket de boppesteande array foar de TRUE wearde en jout in oerienkomst werom út de return_array . Tink derom, as d'r twa of mear krekt deselde wearden binne yn 'e opsykkolom (ynklusyf de letters), sil de formule de earste fûne wedstriid weromjaan.
XLOOKUP-beheining : allinich beskikber yn Excel 365 en Excel 2021.
SUMPRODUCT - haadlettergefoelige opsykje om oerienkommende nûmers werom te jaan
Sa't jo út 'e koptekst begripe, is SUMPRODUCT noch in oare Excel-funksje dy't in haadlettergefoelige opsykje kin dwaan , mar it kin allinich numerike wearden weromjaan. As dit net jo gefal is, spring dan nei it INDEX MATCH-foarbyld dat in oplossing biedt foar alle gegevenstypen.
Sa't jo wierskynlik witte, fermannichfâldigt Excel's SUMPRODUCT komponinten yn 'e oantsjutte arrays en jout de som fan 'e produkten werom. Om't wy in haadlettergefoelige opsykje wolle, brûke wy de EXACT-funksje om de earste array te krijen:
=SUMPRODUCT((EXACT(A2:A7,F2) * (B2:B7)))
Spitigernôch kin de SUMPRODUCT-funksje gjin tekstoerienkomsten weromjaan, om't tekstwearden net fermannichfâldige wurde kinne. Yn dit gefal krije jo in #VALUE! flater lykas yn sel F4 yn it skermôfbylding hjirûnder:
Hoe't dizze formule wurket:
Lykas yn it VLOOKUP-foarbyld, de EXACT funksje kontrôlesde wearde yn F2 tsjin alle wearden yn A2:A7 en jout TRUE werom foar haadlettergefoelige wedstriden, FALSE oars:
SUMPRODUCT(({FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}*{155;186;90;54;159;28}))
Yn de measte formules evaluearret Excel TRUE nei 1 en FALSE nei 0 Dus, as SUMPRODUCT de eleminten fan de twa arrays op deselde posysjes fermannichfâldiget, wurde alle net-oerienkomsten (FALSE) nullen:
SUMPRODUCT({0;0;0;54;0;0})
As resultaat jout de formule in getal werom fan kolom B dy't oerienkomt mei de krekte haadlettergefoelige oerienkomst yn kolom A.
SUMPRODUCT-beheining : kin allinich numerike wearden weromjaan.
INDEX MATCH - haadlettergefoelige opsykje foar alle gegevenstypen
Uteinlik binne wy ticht by it krijen fan in beheiningfrije haadlettergefoelige opsykformule dy't wurket yn alle Excel-ferzjes en op alle gegevenssets.
Dit foarbyld komt as lêste net allinich omdat it bêste wurdt bewarre foar it lêste, mar ek om't de kennis dy't jo yn 'e foargeande foarbylden opdien hawwe, jo helpe kin om de haadlettergefoelige MATCH INDEX-formule better te begripen.
De kombinaasje fan INDEX- en MATCH-funksjes wurdt faak brûkt yn ex cel as in fleksibeler en alsidiger alternatyf foar VLOOKUP. It folgjende artikel docht in goede baan (hooplik :) útlizze hoe't dizze twa funksjes gearwurkje - INDEX MATCH brûke ynstee fan VLOOKUP.
Hjir sil ik jo de wichtichste punten herinnerje:
- De MATCH-funksje siket nei de opsykwearde yn de opjûne opsykmatrix en jout syn relative posysje werom.
- De relativeposysje fan de opsykwearde giet direkt nei it row_num argumint fan de INDEX-funksje dy't it ynstruearret om in wearde werom te jaan fan dy rige.
Foar de formule om tekstfallen te herkennen, moatte jo gewoan moatte noch ien funksje tafoegje oan 'e klassike INDEX MATCH kombinaasje. Fansels hawwe jo de EKAKTE funksje wer nedich:
INDEX( return_array , MATCH(TRUE, EXACT( lookup_value , lookup_array ), 0))De echte formule yn F3 is:
=INDEX(B2:B7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Yn F4 brûke wy dizze:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Tink derom dat it allinich wurket as in arrayformule yn alle ferzjes oars as Excel 365, dus wês wis dat jo dizze ynfiere troch de Ctrl + Shift + Enter-toetsen tegearre te drukken. As it goed dien wurdt, sil de formule omsletten wurde yn krullende beugels lykas werjûn yn 'e skermôfbylding hjirûnder:
Hoe wurket dizze formule:
Lykas yn alle foargeande foarbylden jout EXACT TRUE foar elke wearde yn A2: A7 dy't krekt oerienkomt mei de wearde yn F2. Om't wy TRUE brûke foar de lookup_value fan MATCH, jout it in relative posysje werom fan 'e krekte haadlettergefoelige wedstriid, dat is krekt wat INDEX nedich is om in wedstriid werom te jaan fan B2:B7.
Avansearre haadlettergefoelige opsykformule
De hjirboppe neamde INDEX MATCH-formule sjocht der perfekt út, krekt? Mar yn feite is it net. Lit my jo sjen wêrom.
Stel dat in sel yn 'e weromkommende kolom dy't oerienkomt mei de opsykwearde leech is. Wat sil de formule werombringe? Neat.En no, litte wy sjen wat it eins jout:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Oops, de formule jout in nul! Miskien is it net echt wichtich as jo allinich omgean mei tekstwearden. As jo wurkblêd lykwols sifers befettet en guon fan harren binne echte nullen, is dit in probleem.
Yn wierheid gedrage alle oare opsykformules dy't earder besprutsen binne op deselde wize. Mar no wolle jo in ûnberikbere formule, net?
Om de haadlettergefoelige INDEX MATCH-formule absolút perfekt te meitsjen, ferpakke jo it yn 'e IF-funksje dy't kontrolearret oft in weromkommende sel leech is en neat werom jout yn dit gefal:
=IF(INDIRECT("C"&(1+MATCH(TRUE,EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "")
Yn de boppesteande formule:
- "C" is de weromkommende kolom.
- "1" is it getal dat feroaret in relative posysje fan de sel weromjûn troch de MATCH-funksje yn in echt seladres .
Bygelyks de opsykmatrix yn ús MATCH-funksje is A2: A7, wat betsjut dat de relative posysje fan sel A2 "1" is, om't dit de earste sel yn 'e array is. Mar yn 'e realiteit begjint de opsykarray yn rige 2. Om it ferskil te kompensearjen, foegje wy 1 ta, sadat de INDIRECT-funksje in wearde weromkomt út 'e rjochter sel.
De ûndersteande skermôfbyldings litte de ferbettere haadlettergefoelige INDEX sjen. MATCH formule yn aksje.
As de return sel leech is, jout de formule neat út (in lege tekenrige):
As de return sel in nul befettet , jout de formule 0:
As jo leaver wollewerjaan wat berjocht as in weromkommende sel leech is, ferfange in lege tekenrige ("") yn it lêste argumint fan IF mei wat tekst:
=IF(INDIRECT("C"&(1+MATCH(TRUE, EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "There is nothing to return, sorry.")
Doch case-sensitive VLOOKUP in maklike manier
De brûkers fan ús Ultimate Suite foar Excel hawwe in spesjaal ark dat it opsykjen yn grutte en komplekse tabellen makliker en stressfrij makket. It bêste is dat twa tabellen gearfoegje in opsje-gefoelige opsje hat, en it ûndersteande foarbyld lit it yn aksje sjen.
Stel dat jo Qty wolle lûke. fan de Opsykje -tabel nei de Haad -tabel basearre op unike item-ID's:
Wat jo dogge is de gearfoegjetabellen út te fieren wizard en fier dizze stappen út:
- Selektearje de haadtabel wêryn jo nije gegevens wolle lûke.
- Selektearje de opsyktabel wêr't jo nei de nije gegevens sykje wolle.
- Kies ien of mear kaaikolommen (Item ID yn ús gefal). En wês wis dat jo it fakje Case-sensitive matching kontrolearje.
Ein momint letter krije jo it winske resultaat :)
Dat is hoe te sykjen yn Excel mei rekken hâldend mei de tekst gefal. Ik tankje jo foar it lêzen en hoopje jo nije wike op ús blog te sjen!
Oefeningswurkboek foar download
Hoofdlettergefoelige VLOOKUP-foarbylden (.xlsx-bestân)