Съдържание
В урока е обяснено как да направите VLOOKUP на Excel чувствителна към малки и големи букви, демонстрирани са няколко други формули, които разграничават малки и големи букви на текста, и са посочени силните страни и ограниченията на всяка функция.
Предполагам, че всеки потребител на Excel знае коя е функцията, която извършва вертикално търсене в Excel. Точно така, това е VLOOKUP. Много малко хора обаче са наясно, че VLOOKUP на Excel е безразлична към големи и малки букви, което означава, че тя третира малките и големите букви като едни и същи символи.
Ето един бърз пример, който демонстрира неспособността на VLOOKUP да разграничава регистрите на текстовете. Да предположим, че в клетка А2 имате "bill", а в A4 - "Bill". Формулата по-долу ще улови "bill", тъй като то е първо в масива за търсене, и ще върне съответстваща стойност от B2.
=VLOOKUP("Bill", A2:B4, 2, FALSE)
По-нататък в тази статия ще ви покажа начин да направите VLOOKUP чувствителна към малки и големи букви. Ще разгледаме и няколко други функции, които могат да правят съвпадение с малки и големи букви в Excel.
Формула VLOOKUP с отчитане на големи и малки букви
Както беше споменато по-горе, обичайната формула VLOOKUP не разпознава големината на буквите. Има обаче начин да направите Excel VLOOKUP чувствителен към големината на буквите, както е показано в примера по-долу.
Да предположим, че имате Идентификатори на елементите в колона А и искате да изтеглите цената и коментара на артикула от колони Б и В. Проблемът е, че идентификаторите включват както малки, така и големи символи. Например стойностите в А4 (001Tvci3u) и А5 (001Tvci3U) се различават само по последния символ, съответно "u" и "U".
При търсене на "001Tvci3 U ", стандартната формула VLOOKUP извежда $90, които са свързани с "001Tvci3 u ", тъй като се намира преди "001Tvci3 U " в масива за търсене. Но това не е това, което искате, нали?
=VLOOKUP(F2, A2:C7, 2, FALSE)
За да извършим търсене с отчитане на големи и малки букви в Excel, комбинираме функциите VLOOKUP, CHOOSE и EXACT:
VLOOKUP(TRUE, CHOOSE({1,2}, EXACT( lookup_value , lookup_array ), return_array ), 2, 0)Тази обща формула работи перфектно във всички ситуации. Можете дори да потърсите отдясно наляво , нещо, което обикновената формула VLOOKUP не може да направи. Поздравления за Pouriya за това просто и елегантно решение!
В нашия случай реалните формули са следните.
За да изтеглите цената в F3:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), B2:B7), 2, FALSE)
За извличане на коментара F4:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7), 2, FALSE)
Забележка: Във всички версии на Excel, различни от Excel 365, тази формула работи само като формула за масиви, затова не забравяйте да натиснете Ctrl + Shift + Enter, за да я завършите правилно. В Excel 365, поради поддръжката на динамични масиви, тя работи и като обикновена формула.
Как работи тази формула:
Основната част, която върши работа, е формулата CHOOSE с вложени EXACT:
CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7)
Тук функцията EXACT сравнява стойността в F2 с всяка стойност в A2:A7 и връща TRUE, ако те са напълно еднакви, включително и буквените падежи, и FALSE в противен случай:
{FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE}
За index_num като аргумент на CHOOSE, използваме константата {1,2}. В резултат функцията комбинира логическите стойности от горния масив и стойностите от C2:C7 в двумерен масив по следния начин:
{FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}
Функцията VLOOKUP я взема оттам и търси стойността за търсене (която е TRUE) в първата колона на двуизмерния масив (представен от логическите стойности) и връща съвпадение от втората колона, което е търсената цена:
VLOOKUP(TRUE, {ФАЛШИВО,155;ФАЛШИВО,186;ФАЛШИВО,90;ФАЛШИВО,54;ФАЛШИВО,159;ФАЛШИВО,28}, 2, 0)
Формула XLOOKUP с отчитане на големи и малки букви
Абонатите на Microsoft 365 могат да правят търсене в Excel с отчитане на големи и малки букви с още по-проста формула. Както можете да се досетите, става дума за по-мощния наследник на VLOOKUP - функцията XLOOKUP.
Тъй като XLOOKUP работи поотделно с масиви за търсене и връщане, не е необходим трикът с двуизмерния масив от предишния пример. Просто използвайте EXACT за lookup_array аргумент:
XLOOKUP(TRUE, EXACT( lookup_value , lookup_array ), return_array , "Не е намерен")Последният аргумент ("Не е намерен") не е задължителен. Той само определя каква стойност да се върне, ако не е намерено съответствие. Ако го пропуснете, ще бъде върната стандартна грешка #N/A, в случай че формулата не намери нищо.
За нашата примерна таблица това са формулите XLOOKUP, които трябва да се използват с отчитане на големи и малки букви.
За да получите цената в F3:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), B2:B7, "Not found")
За извличане на коментара F4:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), C2:C7, "Не е намерен")
Как работи тази формула:
Както и в предишния пример, EXACT връща масив от стойности TRUE и FALSE, където TRUE представлява съвпадения, чувствителни към големи и малки букви. XLOOKUP търси в горния масив стойността TRUE и връща съвпадение от return_array . Обърнете внимание, че ако в колоната за търсене има две или повече абсолютно еднакви стойности (включително буквените падежи), формулата ще върне първото намерено съвпадение.
Ограничение на XLOOKUP : на разположение само в Excel 365 и Excel 2021.
SUMPRODUCT - търсене с отчитане на големи и малки букви за връщане на съвпадащи числа
Както разбирате от заглавието, SUMPRODUCT е още една функция на Excel, която може да извършва търсене с отчитане на големи и малки букви, но може да връща цифрови стойности Ако вашият случай не е такъв, преминете към примера INDEX MATCH, който предлага решение за всички типове данни.
Както вероятно знаете, функцията SUMPRODUCT на Excel умножава компонентите в зададените масиви и връща сумата на произведенията. Тъй като искаме да направим проверка с отчитане на регистрите, използваме функцията EXACT, за да получим първия масив:
=SUMPRODUCT((EXACT(A2:A7,F2) * (B2:B7))
За съжаление функцията SUMPRODUCT не може да върне текстови съвпадения, тъй като текстовите стойности не могат да се умножават. В този случай ще получите грешка #VALUE!, както в клетка F4 на скрийншота по-долу:
Как работи тази формула:
Подобно на примера с VLOOKUP, функцията EXACT проверява стойността в F2 спрямо всички стойности в A2:A7 и връща TRUE за съвпадения, чувствителни към големи и малки букви, и FALSE в противен случай:
SUMPRODUCT(({FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}*{155;186;90;54;159;28})
В повечето формули Excel оценява TRUE като 1, а FALSE - като 0. Така че, когато SUMPRODUCT умножава елементите на двата масива на едни и същи позиции, всички несъответствия (FALSE) стават нули:
SUMPRODUCT({0;0;0;54;0;0})
В резултат на това формулата връща число от колона B, което съответства на точното съвпадение в колона A, чувствително към малки и големи букви.
Ограничение на SUMPRODUCT : може да връща само числови стойности.
INDEX MATCH - търсене за всички типове данни с отчитане на големи и малки букви
Най-накрая сме близо до създаването на формула за търсене без ограничения, чувствителна към големи и малки букви, която работи във всички версии на Excel и за всички набори от данни.
Този пример е последен, не само защото най-доброто е запазено за накрая, но и защото знанията, които сте придобили в предишните примери, могат да ви помогнат да разберете по-добре формулата MATCH INDEX с отчитане на големи и малки букви.
Комбинацията от функциите INDEX и MATCH често се използва в Excel като по-гъвкава и универсална алтернатива на VLOOKUP. Следващата статия добре обяснява (надявам се :) как тези две функции работят заедно - Using INDEX MATCH instead of VLOOKUP.
Тук само ще ви припомня основните моменти:
- Функцията MATCH търси стойността за търсене в посочения масив за търсене и връща нейната относителна позиция.
- Относителната позиция на стойността за търсене отива директно в row_num аргумент на функцията INDEX, която я инструктира да върне стойност от този ред.
За да може формулата да разпознава текстови падежи, трябва просто да добавите още една функция към класическата комбинация INDEX MATCH. Очевидно отново ви е необходима функцията EXACT:
INDEX( return_array , MATCH(TRUE, EXACT( lookup_value , lookup_array ), 0))Истинската формула в F3 е:
=INDEX(B2:B7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
В F4 използваме този:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Моля, не забравяйте, че тя работи като формула за масив само във всички версии, различни от Excel 365, така че не забравяйте да я въведете, като натиснете заедно клавишите Ctrl + Shift + Enter. Ако е направено правилно, формулата ще бъде затворена в къдрави скоби, както е показано на снимката на екрана по-долу:
Как работи тази формула:
Както във всички предишни примери, EXACT връща TRUE за всяка стойност в A2:A7, която съвпада точно със стойността в F2. lookup_value на MATCH, той връща относителна позиция на точното съвпадение, чувствително към големи и малки букви, което е точно това, от което INDEX се нуждае, за да върне съвпадение от B2:B7.
Разширена формула за търсене с отчитане на големи и малки букви
Гореспоменатата формула INDEX MATCH изглежда перфектна, нали? Но в действителност не е. Нека ви покажа защо.
Да предположим, че клетката в колоната за връщане, съответстваща на стойността за търсене, е празна. Какво ще върне формулата? Нищо. А сега нека видим какво всъщност връща тя:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Упс, формулата връща нула! Може би това не е много важно, когато се работи само с текстови стойности. Ако обаче работният ви лист съдържа числа и някои от тях са истински нули, това е проблем.
Всъщност всички други формули за търсене, разгледани по-рано, се държат по същия начин. Но сега искате безупречна формула, нали?
За да направите формулата INDEX MATCH с чувствителност към малкия и големия размер на буквите абсолютно перфектна, я обвивате във функцията IF, която проверява дали клетката за връщане е празна и в този случай не връща нищо:
=IF(INDIRECT("C"&(1+MATCH(TRUE,EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "")
В горната формула:
- "C" е колоната за връщане.
- "1" е числото, което превръща относителна позиция на клетката, върната от функцията MATCH, в реален адрес на клетката .
Например масивът за търсене в нашата функция MATCH е A2:A7, което означава, че относителната позиция на клетка A2 е "1", тъй като това е първата клетка в масива. Но в действителност масивът за търсене започва от ред 2. За да компенсираме разликата, добавяме 1, така че функцията INDIRECT ще върне стойност от дясната клетка.
Следващите екранни снимки демонстрират подобрената формула INDEX MATCH с отчитане на големи и малки букви в действие.
Ако клетката за връщане е празна, формулата не извежда нищо (празен низ):
Ако клетката за връщане съдържа нула, формулата връща 0:
Ако предпочитате да покажете някакво съобщение, когато клетката за връщане е празна, заменете празния низ ("") в последния аргумент на IF с някакъв текст:
=IF(INDIRECT("C"&(1+MATCH(TRUE, EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "Няма какво да върнем, съжалявам.")
Лесен начин за извършване на VLOOKUP с отчитане на регистрите
Потребителите на нашия Ultimate Suite за Excel разполагат със специален инструмент, който прави търсенето в големи и сложни таблици по-лесно и без напрежение. Най-хубавото е, че функцията Merge Two Tables (Обединяване на две таблици) има възможност за определяне на големи и малки букви, а примерът по-долу я показва в действие.
Да предположим, че искате да изтеглите Qty. от Преглед на към таблицата Основен таблица въз основа на уникални идентификатори на елементи:
Това, което трябва да направите, е да стартирате съветника за сливане на таблици и да извършите следните стъпки:
- Изберете главната таблица, в която да се изтеглят новите данни.
- Изберете таблицата за търсене, в която да се търсят новите данни.
- Изберете една или повече ключови колони (в нашия случай идентификатор на артикул). И не забравяйте да проверите Съпоставяне с отчитане на големи букви кутия.
След малко ще получите желания резултат :)
Това е начинът за търсене в Excel, като се вземе предвид случаят на текста. Благодаря ви за четенето и се надявам да се видим в нашия блог следващата седмица!
Практическа работна тетрадка за изтегляне
Примери за VLOOKUP с отчитане на регистрите (.xlsx файл)