Turinys
Pamokoje paaiškinama, kaip padaryti, kad "Excel" VLOOKUP būtų jautri didžiosioms raidėms, demonstruojamos kelios kitos formulės, kuriose išskiriamos teksto didžiosios raidės, ir nurodomi kiekvienos funkcijos privalumai ir trūkumai.
Manau, kad kiekvienas "Excel" naudotojas žino, kokia funkcija "Excel" programoje atlieka vertikalią paiešką. Teisingai, tai VLOOKUP. Tačiau labai mažai žmonių žino, kad "Excel" VLOOKUP neatsižvelgia į mažąsias ir didžiąsias raides, t. y. mažąsias ir didžiąsias raides traktuoja kaip tuos pačius simbolius.
Pateikiame trumpą pavyzdį, kuris parodo, kad VLOOKUP nesugeba atskirti teksto raidžių. Tarkime, jei ląstelėje A2 yra "bill", o A4 - "Bill". Toliau pateiktoje formulėje bus įrašyta "bill", nes ji yra pirmoji paieškos masyve, ir bus grąžinta atitinkama reikšmė iš B2.
=VLOOKUP("Bill", A2:B4, 2, FALSE)
Toliau šiame straipsnyje parodysiu būdą, kaip padaryti, kad VLOOKUP būtų jautri didžiosioms raidėms. Taip pat išnagrinėsime keletą kitų funkcijų, kuriomis "Excel" programoje galima atlikti atitiktį didžiosioms raidėms.
VLOOKUP formulė, kurioje jautrios didžiosios raidės
Kaip minėta pirmiau, įprasta VLOOKUP formulė neatpažįsta raidžių raidžių. Tačiau yra būdas, kaip padaryti, kad "Excel" VLOOKUP būtų jautri raidžių raidėms, kaip parodyta toliau pateiktame pavyzdyje.
Tarkime, kad turite Elemento ID A stulpelyje, o iš B ir C stulpelių norime ištraukti prekės kainą ir komentarą. Problema ta, kad ID apima ir mažąsias, ir didžiąsias raides. Pavyzdžiui, A4 (001Tvci3u) ir A5 (001Tvci3U) reikšmės skiriasi tik paskutiniu ženklu, atitinkamai "u" ir "U".
Ieškodami "001Tvci3 U ", pagal standartinę VLOOKUP formulę gaunama 90 USD, kurie yra susiję su "001Tvci3". u ", nes jis yra prieš "001Tvci3 U " paieškos masyve. Bet juk jūs norite ne to, ar ne?
=VLOOKUP(F2, A2:C7, 2, FALSE)
Norėdami "Excel" programoje atlikti paiešką pagal mažąsias ir didžiąsias raides, deriname funkcijas VLOOKUP, CHOOSE ir EXACT:
VLOOKUP(TRUE, CHOOSE({1,2}, EXACT( lookup_value , lookup_array ), return_array ), 2, 0)Ši bendroji formulė puikiai tinka visose situacijose. iš dešinės į kairę , ko negali padaryti įprasta VLOOKUP formulė. Dėkojame Pouriya už šį paprastą ir elegantišką sprendimą!
Mūsų atveju tikrosios formulės yra tokios.
Norėdami ištraukti kainą, F3:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), B2:B7), 2, FALSE)
Norėdami gauti komentarą F4:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7), 2, FALSE)
Pastaba. Visose "Excel" versijose, išskyrus "Excel 365", ši formulė veikia tik kaip masyvo formulė, todėl nepamirškite paspausti Ctrl + Shift + Enter, kad ją tinkamai užbaigtumėte. "Excel 365" dėl dinaminių masyvų palaikymo ši formulė taip pat veikia kaip įprasta formulė.
Kaip veikia ši formulė:
Pagrindinė dalis, kuri atlieka šį triuką, yra formulė CHOOSE su įterptu EXACT:
CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7)
Šiuo atveju funkcija EXACT palygina F2 reikšmę su kiekviena A2:A7 reikšme ir grąžina TRUE, jei jos yra visiškai vienodos, įskaitant raidžių raidę, o priešingu atveju - FALSE:
{FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE}
Dėl index_num argumentą CHOOSE, naudojame masyvo konstantą {1,2}. Dėl to funkcija sujungia logines reikšmes iš pirmiau pateikto masyvo ir reikšmes iš C2:C7 į tokį dvimatį masyvą:
{FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}
Funkcija VLOOKUP ieško paieškos reikšmės (kuri yra TRUE) 2-mačio masyvo 1-ajame stulpelyje (kurį sudaro loginės reikšmės) ir grąžina atitikmenį iš 2-ojo stulpelio, t. y. ieškomą kainą:
VLOOKUP(TRUE, {FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}, 2, 0)
XLOOKUP formulė, kurioje jautrios didžiosios raidės
"Microsoft 365" prenumeratoriai gali atlikti paiešką pagal bylas "Excel" programoje naudodami dar paprastesnę formulę. Kaip galite spėti, kalbu apie galingesnę VLOOKUP įpėdinę - funkciją XLOOKUP.
Kadangi XLOOKUP veikia atskirai su paieškos ir grąžinimo masyvais, mums nebereikia ankstesniame pavyzdyje naudoto triuko su dviejų matmenų masyvais. Tiesiog naudokite EXACT lookup_array argumentas:
XLOOKUP(TRUE, EXACT( lookup_value , lookup_array ), return_array , "Nerastas")Paskutinis argumentas ("Nerastas") yra neprivalomas. Jis tik apibrėžia, kokią reikšmę grąžinti, jei nerandama atitikmenų. Jei jo nepateiksite, bus grąžinama standartinė #N/A klaida, jei formulė nieko neras.
Mūsų pavyzdinėje lentelėje naudojamos šios didžiosios raidės, kurias reikia naudoti XLOOKUP formulėse.
Norėdami gauti kainą F3:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), B2:B7, "Nerastas")
Komentaro išskyrimas F4:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), C2:C7, "Nerastas")
Kaip veikia ši formulė:
Kaip ir ankstesniame pavyzdyje, EXACT grąžina TRUE ir FALSE reikšmių masyvą, kur TRUE reiškia mažųjų ir didžiųjų raidžių skirtumus. XLOOKUP ieško TRUE reikšmės minėtame masyve ir grąžina atitikmenį iš return_array Atkreipkite dėmesį, kad jei paieškos stulpelyje yra dvi ar daugiau lygiai tokių pačių verčių (įskaitant raidžių raidę), formulė grąžins pirmą rastą atitikmenį.
XLOOKUP apribojimas : galima naudoti tik "Excel 365" ir "Excel 2021".
SUMPRODUCT - paieška pagal mažąsias ir didžiąsias raides, kad būtų grąžinti atitinkami skaičiai
Kaip supratote iš antraštės, SUMPRODUCT yra dar viena "Excel" funkcija, kuri gali atlikti paiešką pagal didžiąją raidę, tačiau ji gali grąžinti skaitinės vertės Jei tai ne jūsų atvejis, pereikite prie INDEX MATCH pavyzdžio, kuriame pateikiamas sprendimas visiems duomenų tipams.
Kaip tikriausiai žinote, "Excel" funkcija SUMPRODUCT padaugina nurodytuose masyvuose esančius komponentus ir grąžina sandaugų sumą. Kadangi norime, kad paieška būtų atliekama atsižvelgiant į mažąsias ir didžiąsias raides, pirmajam masyvui gauti naudojame funkciją EXACT:
=SUMPRODUKTAS((EXACT(A2:A7,F2) * (B2:B7))
Deja, funkcija SUMPRODUCT negali grąžinti teksto atitikmenų, nes teksto reikšmių negalima dauginti. Tokiu atveju gausite #VALUE! klaidą, kaip toliau pateiktame paveikslėlyje F4 langelyje:
Kaip veikia ši formulė:
Kaip ir VLOOKUP pavyzdyje, funkcija EXACT patikrina F2 vertę su visomis A2:A7 vertėmis ir grąžina TRUE, jei sutampa didžiosios ir mažosios raidės, o priešingu atveju - FALSE:
SUMPRODUCT(({FALIŠKAS;MELAGINGAS;MELAGINGAS;TEISINGAS;MELAGINGAS;MELAGINGAS;MELAGINGAS}*{155;186;90;54;159;28}))
Daugumoje formulių "Excel" TRUE vertina kaip 1, o FALSE - kaip 0. Taigi, kai SUMPRODUCT padaugina dviejų masyvų elementus, esančius tose pačiose pozicijose, visi nesutapimai (FALSE) tampa nuliais:
SUMPRODUCT({0;0;0;54;0;0})
Rezultatas - formulė grąžina skaičių iš B stulpelio, kuris atitinka tikslų A stulpelio atitikmenį, atsižvelgiant į mažąsias ir didžiąsias raides.
SUMPRODUCT apribojimas : gali grąžinti tik skaitines reikšmes.
INDEKSO RODYKLĖ - visų duomenų tipų paieška pagal mažąsias ir didžiąsias raides
Pagaliau esame arti to, kad sukurtume neribotą paieškos formulę, kuri veiktų visose "Excel" versijose ir visuose duomenų rinkiniuose.
Šis pavyzdys yra paskutinis ne tik todėl, kad geriausi dalykai paliekami paskutiniams, bet ir todėl, kad ankstesniuose pavyzdžiuose įgytos žinios gali padėti geriau suprasti raidžių ir raidžių skirtumo MATCH INDEX formulę.
INDEX ir MATCH funkcijų derinys dažnai naudojamas "Excel" programoje kaip lankstesnė ir universalesnė VLOOKUP alternatyva. Toliau pateiktame straipsnyje gerai paaiškinta (tikiuosi :), kaip šios dvi funkcijos veikia kartu - INDEX MATCH naudojimas vietoj VLOOKUP.
Čia tik priminsiu svarbiausius dalykus:
- Funkcija MATCH ieško paieškos reikšmės nurodytame paieškos masyve ir grąžina jos santykinę padėtį.
- Ieškomosios reikšmės santykinė padėtis tiesiogiai nukreipiama į eilutės_num funkcijos INDEX argumentas, nurodantis jai grąžinti tos eilutės reikšmę.
Kad formulė atpažintų teksto atvejus, tereikia prie klasikinio INDEX MATCH derinio pridėti dar vieną funkciją. Akivaizdu, kad vėl reikia funkcijos EXACT:
INDEKSAS( return_array , MATCH(TRUE, EXACT( lookup_value , lookup_array ), 0))Tikroji F3 formulė yra tokia:
=INDEX(B2:B7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
F4 programoje naudojame šį:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Atminkite, kad visose kitose nei "Excel 365" versijose ji veikia tik kaip masyvo formulė, todėl būtinai ją įveskite kartu paspausdami klavišus Ctrl + Shift + Enter. Jei tai atlikta teisingai, formulė bus uždaryta į lenktus skliaustelius, kaip parodyta toliau pateiktoje ekrano nuotraukoje:
Kaip veikia ši formulė:
Kaip ir visuose ankstesniuose pavyzdžiuose, EXACT grąžina TRUE kiekvienai A2:A7 reikšmei, kuri tiksliai atitinka F2 reikšmę. lookup_value MATCH, jis grąžina santykinę tikslaus didžiosios ir mažosios raidžių santykio poziciją, būtent to reikia INDEX, kad būtų grąžintas atitikmuo iš B2:B7.
Išplėstinė paieškos formulė, kurioje atsižvelgiama į mažąsias ir didžiąsias raides
Minėta INDEX MATCH formulė atrodo tobula, tiesa? Tačiau iš tikrųjų taip nėra. Parodysiu, kodėl.
Tarkime, kad grąžinimo stulpelio langelis, atitinkantis paieškos reikšmę, yra tuščias. Ką grąžins formulė? Nieko. O dabar pažiūrėkime, ką ji iš tikrųjų grąžina:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Ups, formulė grąžina nulį! Galbūt tai nėra labai svarbu, kai dirbama tik su teksto reikšmėmis. Tačiau jei darbalapyje yra skaičių ir kai kurie iš jų yra tikri nuliai, tai yra problema.
Tiesą sakant, visos kitos anksčiau aptartos paieškos formulės veikia taip pat. Tačiau dabar norite nepriekaištingos formulės, ar ne?
Kad INDEX MATCH formulė būtų visiškai tobula, į ją įtraukiama funkcija IF, kuri tikrina, ar grąžinama ląstelė yra tuščia, ir tokiu atveju negrąžina nieko:
=IF(INDIRECT("C"&(1+MATCH(TRUE,EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), ""), "")
Pirmiau pateiktoje formulėje:
- "C" yra grąžinimo stulpelis.
- "1" yra skaičius, kuris paverčia santykinė padėtis ląstelės, kurią grąžino funkcija MATCH, į tikrasis ląstelės adresas .
Pavyzdžiui, mūsų funkcijos MATCH paieškos masyvas yra A2:A7, o tai reiškia, kad ląstelės A2 santykinė padėtis yra "1", nes tai yra pirmoji ląstelė masyve. Tačiau iš tikrųjų paieškos masyvas prasideda 2 eilutėje. Kad kompensuotume skirtumą, pridedame 1, todėl funkcija INDIRECT grąžins reikšmę iš dešiniosios ląstelės.
Toliau pateiktose ekrano nuotraukose parodyta, kaip veikia patobulinta raidžių skirtumo INDEX MATCH formulė.
Jei grąžinimo ląstelė yra tuščia, formulė neišveda nieko (tuščią eilutę):
Jei grąžinimo ląstelėje yra nulis, formulė grąžina 0:
Jei norite, kad, kai grąžinamas tuščias langelis, būtų rodomas koks nors pranešimas, pakeiskite paskutiniame argumente IF esančią tuščią eilutę ("") kokiu nors tekstu:
=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.")
Lengvas būdas atlikti VLOOKUP pagal bylas
Mūsų programos "Ultimate Suite for Excel" naudotojai turi specialų įrankį, kuris palengvina paiešką didelėse ir sudėtingose lentelėse ir padeda išvengti streso. Geriausia tai, kad "Merge Two Tables" (Sujungti dvi lenteles) turi mažųjų ir didžiųjų raidžių parinktį, o toliau pateiktame pavyzdyje parodyta, kaip ji veikia.
Tarkime, kad norite ištraukti Qty. iš Ieškoti lentelę į Pagrindinis lentelę pagal unikalius elemento ID:
Paleiskite "Merge Tables" vedlį ir atlikite šiuos veiksmus:
- Pasirinkite pagrindinę lentelę, į kurią norite įtraukti naujus duomenis.
- Pasirinkite paieškos lentelę, kurioje bus ieškoma naujų duomenų.
- Pasirinkite vieną ar kelis pagrindinius stulpelius (mūsų atveju - elemento ID). Ir būtinai patikrinkite Atitikimas pagal didžiąsias raides dėžutė.
Po akimirkos gausite norimą rezultatą :)
Štai kaip ieškoti "Excel" programoje, atsižvelgiant į teksto atvejį. Dėkoju, kad perskaitėte, ir tikiuosi, kad kitą savaitę susitiksime mūsų tinklaraštyje!
Atsisiųsti praktikos sąsiuvinį
VLOOKUP pavyzdžiai, kuriuose naudojamos didžiosios raidės (.xlsx failas)