Съдържание
В урока се представя XLOOKUP - новата функция за вертикално и хоризонтално търсене в Excel. Търсенето вляво, последното съвпадение, Vlookup с множество критерии и много други неща, за чието изпълнение преди се изискваше диплома за ракетна наука, вече са лесни като ABC.
Когато ви се налага да търсите в Excel, коя функция ще използвате? Дали крайъгълния камък VLOOKUP или хоризонталния му брат HLOOKUP? В по-сложен случай ще разчитате на каноничната комбинация INDEX MATCH или ще възложите задачата на Power Query? Добрата новина е, че вече не трябва да избирате - всички тези методи отстъпват място на по-мощния и универсален наследник - функцията XLOOKUP.
С какво XLOOKUP е по-добра? В много отношения! Тя може да търси вертикално и хоризонтално, наляво и нагоре, да търси по няколко критерия и дори да връща цяла колона или ред данни, а не само една стойност. На Microsoft им отне повече от три десетилетия, но най-накрая успяха да създадат надеждна функция, която преодолява много от досадните грешки и слабости на VLOOKUP.
Каква е уловката? Уви, има я. Функцията XLOOKUP е налична само в Excel за Microsoft 365, Excel 2021 и Excel за уеб.
Функция XLOOKUP на Excel - синтаксис и приложения
Функцията XLOOKUP в Excel претърсва диапазон или масив за определена стойност и връща съответната стойност от друга колона. Тя може да търси както вертикално, така и хоризонтално и да извършва точно съвпадение (по подразбиране), приблизително (най-близко) съвпадение или заместващо (частично) съвпадение.
Синтаксисът на функцията XLOOKUP е следният:
XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])Първите три аргумента са задължителни, а последните три - незадължителни.
- Lookup_value - стойността, която се търси.
- Lookup_array - диапазона или масива, в който се търси.
- Return_array - диапазона или масива, от който се връщат стойности.
- If_not_found [незадължително] - стойността, която да се върне, ако не е намерено съвпадение. Ако се пропусне, се връща грешка #N/A.
- Match_mode [незадължително] - типът на съвпадение, който трябва да се изпълни:
- 0 или пропуснато (по подразбиране) - точно съвпадение. Ако не бъде намерено, се връща грешка #N/A.
- -1 - точно съвпадение или следващата по-малка стойност. Ако не е намерено точно съвпадение, се връща следващата по-малка стойност.
- 1 - точно съвпадение или следващата по-голяма стойност. Ако не е намерено точно съвпадение, се връща следващата по-голяма стойност.
- 2 - съвпадение на заместващи символи.
- Search_mode [по избор] - посоката на търсене:
- 1 или пропуснато (по подразбиране) - за търсене от първия до последния.
- -1 - за търсене в обратен ред, от последния към първия.
- 2 - двоично търсене на данни, подредени във възходящ ред.
- -2 - двоично търсене на данни, подредени в низходящ ред.
Според Microsoft, двоично търсене е включен за напреднали потребители. Това е специален алгоритъм, който намира позицията на търсената стойност в сортиран масив, като я сравнява със средния елемент на масива. Двоичното търсене е много по-бързо от обикновеното търсене, но работи правилно само при сортирани данни.
Основна формула на XLOOKUP
За да разберем по-добре, нека построим формула Xlookup в нейната най-проста форма, за да извършим точно търсене. За целта ще се нуждаем само от първите 3 аргумента.
Предполагаме, че разполагате с обобщена таблица с информация за петте океана на Земята. Искате да получите площта на определен океан, въведена в F1 ( lookup_value ). С имената на океаните в A2:A6 ( lookup_array ) и площи в C2:C6 ( return_array ), формулата е следната:
=XLOOKUP(F1, A2:A6, C2:C6)
Преведено на чист английски език, то гласи: търсете стойността F1 в A2:A6 и връщайте стойност от C2:C6 в същия ред. Няма номера на индексите на колоните, няма сортиране, няма други нелепи странности на Vlookup! Просто работи :)
XLOOKUP срещу VLOOKUP в Excel
В сравнение с традиционната функция VLOOKUP XLOOKUP има много предимства. В какво е по-добра от VLOOKUP? Ето списък с 10-те най-добри функции, които превъзхождат всички останали функции за търсене в Excel:
- Вертикално и хоризонтално търсене . Името на функцията XLOOKUP се дължи на способността ѝ да търси нагоре както вертикално, така и хоризонтално.
- Гледайте във всяка посока: надясно, наляво, надолу или нагоре Докато VLOOKUP може да търси само в най-лявата колона, а HLOOKUP - в най-горния ред, XLOOKUP няма такива ограничения. Прословутото ляво търсене в Excel вече не е болка!
- Точно съвпадение по подразбиране В повечето случаи ще търсите точно съвпадение и XLOOKUP го връща по подразбиране (за разлика от функцията VLOOKUP, която по подразбиране дава приблизително съвпадение). Разбира се, можете да накарате XLOOKUP да извърши и приблизително съвпадение, ако е необходимо.
- Частично съвпадение със заместващи символи Когато знаете само част от стойността на търсенето, но не и цялата, подредбата с подредба е полезна.
- Търсене в обратен ред . Преди, за да получите последната поява, трябваше да обърнете реда на изходните данни. search_mode на -1, за да накарате формулата Xlookup да търси отзад напред и да връща последното съвпадение.
- Връщане на множество стойности . Чрез манипулиране с return_array можете да изтеглите цял ред или колона от данни, свързани със стойността за търсене.
- Търсене с множество критерии . Excel XLOOKUP обработва масиви в естествен вид, което дава възможност за извършване на търсене с множество критерии.
- Ако функционалността за грешки Традиционно използваме функцията IFNA за улавяне на грешки #N/A. XLOOKUP включва тази функция в if_not_found аргумент, позволяващ извеждането на собствен текст, ако не е намерено валидно съвпадение.
- Вмъкване/изтриване на колони . Един от най-дразнещите проблеми при VLOOKUP е, че добавянето или премахването на колони нарушава формулата, тъй като връщаната колона се идентифицира чрез номера на индекса ѝ. При XLOOKUP предоставяте диапазона за връщане, а не номера, което означава, че можете да добавяте и премахвате толкова колони, колкото ви е необходимо, без да нарушавате нищо.
- По-добра производителност . VLOOKUP може да забави работните ви листове, тъй като включва цялата таблица в изчисленията, което води до обработка на много повече клетки, отколкото е необходимо. XLOOKUP обработва само масивите за търсене и връщане, от които наистина зависи.
Как да използвате XLOOKUP в Excel - примери за формули
Следващите примери демонстрират най-полезните функции на XLOOKUP в действие. Освен това ще откриете няколко нетривиални приложения, които ще издигнат уменията ви за търсене в Excel на ново ниво.
Погледнете нагоре вертикално и хоризонтално
Microsoft Excel разполагаше с две функции за различни типове търсене, като всяка от тях имаше собствен синтаксис и правила за използване: VLOOKUP за вертикално търсене в колона и HLOOKUP за хоризонтално търсене в ред.
Функцията XLOOKUP може да прави и двете със същия синтаксис. Разликата е в това, което предоставяте за масивите за търсене и връщане.
За v-търсене задайте колони:
=XLOOKUP(E1, A2:A6, B2:B6)
За h-lookup въведете редове вместо колони:
=XLOOKUP(I1, B1:F1, B2:F2)
Извършване на естествено търсене вляво
В по-ранните версии на Excel формулата INDEX MATCH беше единственият надежден начин за търсене наляво или нагоре. Сега вече не е необходимо да комбинирате две функции там, където една би била достатъчна. Просто посочете целевия масив за търсене и XLOOKUP ще се справи с него без проблем, независимо от местоположението му.
Като пример, нека добавим Ранг Целта е да се получи рангът на океанския вход в F1. VLOOKUP ще се спъне тук, защото може да върне стойност само от колона вдясно от колоната за търсене. Формулата Xlookup се справя с лекота:
=XLOOKUP(F1, B2:B6, A2:A6)
По подобен начин можете да погледнете по-горе, когато търсите хоризонтално в редове.
XLOOKUP с точно и приблизително съвпадение
Поведението на съвпадението се контролира от петия аргумент, наречен match_mode . По подразбиране се извършва точно съвпадение.
Моля, обърнете внимание, че дори когато изберете приблизително съвпадение ( match_mode зададена на 1 или -1), функцията все още ще търси първо точно съвпадение. Разликата е в това какво връща, ако не е намерена точна стойност за търсене.
Аргумент Match_mode:
- 0 или е пропуснато - точно съвпадение; ако не е намерено - грешка #N/A.
- -1 - точно съвпадение; ако не бъде намерено - следващият по-малък елемент.
- 1 - точно съвпадение; ако не бъде намерен - следващият по-голям елемент.
Точно съвпадение XLOOKUP
Това е опцията, която вероятно използвате в 99% от случаите, когато търсите в Excel. Тъй като точното съвпадение е поведението по подразбиране на XLOOKUP, можете да пропуснете match_mode и да предоставите само първите 3 задължителни аргумента.
В някои ситуации обаче точното съвпадение няма да работи. Типичен сценарий е, когато таблицата за търсене не съдържа всички стойности, а по-скоро "етапи" или "граници" като отстъпки на база количество, комисиони на база продажби и т.н.
Нашата примерна таблица за търсене показва връзката между резултатите от изпитите и оценките. Както можете да видите на снимката по-долу, точното съвпадение работи само когато резултатът на конкретен ученик съвпада точно със стойността в таблицата за търсене (като Christian в ред 3). Във всички останали случаи се връща грешка #N/A.
=XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6)
За да получим оценки вместо грешки #N/A, трябва да потърсим приблизително съвпадение, както е показано в следващия пример.
Приблизително съвпадение XLOOKUP
За да извършите приблизително търсене, задайте match_mode на -1 или 1, в зависимост от това как са организирани данните.
В нашия случай таблицата за търсене съдържа долните граници на класовете. match_mode на -1, за да се търси следващата по-малка стойност, когато не е намерено точно съвпадение:
=XLOOKUP(F11, $B$11:$B$15, $C$11:$C$15, ,-1)
Например Брайън има оценка 98 (F2). Формулата търси тази стойност за търсене в B2:B6, но не може да я открие. След това тя търси следващия по-малък елемент и намира 90, което съответства на оценка А:
Ако нашата таблица за търсене съдържаше горните граници на класовете, щяхме да зададем match_mode на 1, за да се търси следващият по-голям елемент, ако точното съвпадение е неуспешно:
=XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6, ,1)
Формулата търси 98 и отново не може да го намери. Този път тя се опитва да намери следващата по-голяма стойност и получава 100, което съответства на клас А:
Съвет: Когато копирате формула Xlookup в няколко клетки, заключете диапазоните за търсене или връщане с абсолютни референции към клетките (например $B$2:$B$6), за да предотвратите промяната им.
XLOOKUP с частично съвпадение (заместващи символи)
За да извършите частично търсене на съвпадение, задайте match_mode на 2, което указва на функцията XLOOKUP да обработва заместващите символи:
- Звездичка (*) - представлява всяка последователност от символи.
- Въпросителен знак (?) - представлява всеки отделен символ.
За да разберете как работи, разгледайте следния пример. В колона А имате няколко модела смартфони, а в колона Б - капацитета на батерията им. Любопитни сте за батерията на определен смартфон. Проблемът е, че не сте сигурни, че можете да въведете името на модела точно така, както се появява в колона А. За да преодолеете това, въведете частта, която със сигурност е там, и заменете останалатасимволи със заместващи символи.
Например, за да получите информация за батерията на iPhone X, използвайте тази формула:
=XLOOKUP("*iphone X*", A2:A8, B2:B8, ,2)
Или въведете известната част от стойността за търсене в някоя клетка и свържете препратката към клетката със символи за заместване:
=XLOOKUP("*"&E1& "*", A2:A8, B2:B8, ,2)
XLOOKUP в обратен ред, за да получите последната поява
В случай че таблицата ви съдържа няколко повторения на стойността за търсене, понякога може да се наложи да върнете последен мач . За да го направите, конфигурирайте формулата си Xlookup да търси в обратен ред.
Посоката на търсене се контролира от шестия аргумент, наречен search_mode :
- 1 или пропуснато (по подразбиране) - търси от първата към последната стойност, т.е. отгоре надолу с вертикално търсене или отляво надясно с хоризонтално търсене.
- -1 - търси в обратен ред от последната към първата стойност.
Като пример, нека върнем последната продажба, извършена от конкретен продавач. За тази цел събираме първите три необходими аргумента (G1 за lookup_value , B2:B9 за lookup_array и D2:D9 за return_array ) и поставете -1 в петия аргумент:
=XLOOKUP(G1, B2:B9, D2:D9, , ,-1)
Просто и лесно, нали?
XLOOKUP за връщане на няколко колони или редове
Още една невероятна функция на XLOOKUP е възможността за връщане на повече от една стойност, отнасяща се до едно и също съвпадение. Всичко това се извършва със стандартния синтаксис и без никакви допълнителни манипулации!
Предполагаме, че от таблицата по-долу искате да извлечете всички данни, отнасящи се до продавача, който ви интересува (F2). Това, което трябва да направите, е да предоставите диапазон, а не отделна колона или ред, за return_array аргумент:
=XLOOKUP(F2, A2:A7, B2:D7)
Въвеждате формулата в горната лява клетка на диапазона на резултатите и Excel автоматично прелива резултатите в съседните празни клетки. В нашия случай масивът за връщане (B2:D7) включва 3 колони ( Дата , Артикул и Сума ) и трите стойности се връщат в диапазона G2:I2.
Ако предпочитате да подредите резултатите вертикално в колона, вложете XLOOKUP във функцията TRANSPOSE, за да обърнете върнатия масив:
=TRANSPOSE(XLOOKUP(G1, A2:A7, B2:D7))
По подобен начин можете да върнете цяла колона с данни, например Сума За тази цел използвайте клетка F1, която съдържа "Amount" като lookup_value , диапазонът A1:D1, съдържащ заглавията на колоните, както следва lookup_array и диапазона A2:D7, съдържащ всички данни като return_array .
=XLOOKUP(F1, A1:D1, A2:D7)
Забележка: Тъй като в съседните клетки се попълват множество стойности, уверете се, че имате достатъчно празни клетки вдясно или надолу. Ако Excel не може да намери достатъчно празни клетки, се появява грешка #SPILL!
Съвет. XLOOKUP може не само да връща множество записи, но и да ги замества с други стойности, които сте посочили. Пример за такова групово заместване можете да намерите тук: Как да търсите и замествате множество стойности с XLOOKUP.
XLOOKUP с множество критерии
Друго голямо предимство на XLOOKUP е, че той работи с масиви. Благодарение на тази възможност можете да оценявате множество критерии директно в lookup_array аргумент:
XLOOKUP(1, ( criteria_range1 = критерии1 ) * ( criteria_range2 = критерии2 ) * (...), return_array )Как работи тази формула : Резултатът от всеки тест на критериите е масив от стойности TRUE и FALSE. Умножаването на масивите превръща TRUE и FALSE съответно в 1 и 0 и дава крайния масив за търсене. Както знаете, умножаването по 0 винаги дава нула, така че в масива за търсене само елементите, които отговарят на всички критерии, са представени с 1. И тъй като нашата стойност за търсене е "1", Excel взема първата "1" в lookup_array (първо съвпадение) и връща стойността от return_array в същото положение.
За да видите формулата в действие, нека изтеглим сума от D2:D10 ( return_array ) при следните условия:
- Критерий1 (дата) = G1
- Критерий2 (продавач) = G2
- Критерий3 (елемент) = G3
С дати в A2:A10 ( criteria_range1 ), имена на продавачи в B2:B10 ( criteria_range2 ) и елементи от C2:C10 ( criteria_range3 ), формулата придобива следния вид:
=XLOOKUP(1, (B2:B10=G1) * (A2:A10=G2) * (C2:C10=G3), D2:D10)
Въпреки че функцията XLOOKUP на Excel обработва масиви, тя работи като обикновена формула и се завършва с обикновено натискане на клавиш Enter.
Формулата XLOOKUP с множество критерии не се ограничава до условия "равно на". Можете да използвате и други логически оператори. Например, за да филтрирате поръчки, направени на датата в G1 или по-рано, поставете "<=G1" в първия критерий:
=XLOOKUP(1, (A2:A10<=G1) * (B2:B10=G2) * (C2:C10=G3), D2:D10)
Двоен XLOOKUP
За да намерите стойност в пресечната точка на определен ред и колона, извършете т.нар. двойно търсене или търсене на матрица . Да, Excel XLOOKUP може да прави и това! Просто вмъквате една функция в друга:
XLOOKUP( lookup_value1 , lookup_array1 , XLOOKUP( lookup_value2 , lookup_array2 , data_values ))Как работи тази формула : Формулата се основава на способността на XLOOKUP да връща цял ред или колона. Вътрешната функция търси своята стойност за търсене и връща колона или ред от свързани данни. Този масив отива във външната функция като return_array .
В този пример ще намерим продажбите, извършени от конкретен продавач в рамките на определено тримесечие. За тази цел въвеждаме стойностите за търсене в H1 (име на продавача) и H2 (тримесечие) и правим двупосочен Xlookup със следната формула:
=XLOOKUP(H1, A2:A6, XLOOKUP(H2, B1:E1, B2:E6))
Или обратното:
=XLOOKUP(H2, B1:E1, XLOOKUP(H1, A2:A6, B2:E6))
Където A2:A6 са имената на продавачите, B1:E1 са тримесечия (заглавия на колони), а B2:E6 са стойности на данните.
Двупосочно търсене може да се извърши и с формулата INDEX Match и по няколко други начина. За повече информация вижте Двупосочно търсене в Excel.
Ако грешка XLOOKUP
Когато стойността за търсене не е намерена, Excel XLOOKUP връща грешка #N/A. Доста познато и разбираемо за опитните потребители, това може да е доста объркващо за начинаещите. За да замените стандартното записване на грешка с удобно за потребителя съобщение, въведете свой собствен текст в 4-ия аргумент с име if_not_found .
Ако някой въведе невалидно име на океан в E1, следната формула изрично ще му каже, че "Не е намерено съвпадение":
=XLOOKUP(E1, A2:A6, B2:B6, "Не е намерено съответствие")
Забележки:
- Сайтът if_not_found улавя само грешки #N/A, а не всички грешки.
- Грешките #N/A могат да се обработват и с IFNA и VLOOKUP, но синтаксисът е малко по-сложен и формулата е по-дълга.
Чувствителност на буквите XLOOKUP
По подразбиране функцията XLOOKUP третира малките и големите букви като едни и същи знаци. За да я направите чувствителна към големи и малки букви, използвайте функцията EXACT за lookup_array аргумент:
XLOOKUP(TRUE, EXACT( lookup_value , lookup_array ), return_array )Как работи тази формула : Функцията EXACT сравнява стойността за търсене с всяка стойност в масива за търсене и връща TRUE, ако те са напълно еднакви, включително буквените падежи, и FALSE в противен случай. Този масив от логически стойности отива в lookup_array В резултат на това XLOOKUP търси стойността TRUE в горния масив и връща съвпадение от масива за връщане.
Например, за да получите цената от B2:B7 ( return_array ) за елемента в E1 ( lookup_value) , формулата в E2 е:
=XLOOKUP(TRUE, EXACT(E1, A2:A7), B2:B7, "Not found")
Забележка: Ако в масива за търсене има две или повече абсолютно еднакви стойности (включително буквените падежи), се връща първото намерено съвпадение.
Excel XLOOKUP не работи
Ако формулата ви не работи правилно или води до грешка, това най-вероятно се дължи на следните причини:
XLOOKUP не е наличен в моя Excel
Функцията XLOOKUP не е обратно съвместима. Тя е налична само в Excel за Microsoft 365 и Excel 2021 и няма да се появи в по-ранни версии.
XLOOKUP връща грешен резултат
Ако очевидно правилната ви формула Xlookup връща грешна стойност, има вероятност диапазонът за търсене или връщане да се е "изместил" при копирането на формулата надолу или на другата страна. За да предотвратите това, не забравяйте винаги да заключвате двата диапазона с абсолютни препратки към клетките (например $A$2:$A$10).
XLOOKUP връща грешка #N/A
Грешката #N/A просто означава, че стойността за търсене не е намерена. За да поправите това, опитайте да потърсите приблизително съвпадение или информирайте потребителите, че не е намерено съвпадение.
XLOOKUP връща грешка #VALUE
Грешка #VALUE! се появява, ако масивите за търсене и връщане имат несъвместими размери. Например не е възможно да се търси в хоризонтален масив и да се връщат стойности от вертикален масив.
XLOOKUP връща грешка #REF
Грешка #REF! се хвърля при търсене между две различни работни книги, едната от които е затворена. За да поправите грешката, просто отворете и двата файла.
Както току-що видяхте, XLOOKUP има много страхотни функции, които я превръщат във функцията за почти всяко търсене в Excel. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!
Практическа работна тетрадка за изтегляне
Примери за формулата Excel XLOOKUP (.xlsx файл)