Съдържание
Тези примери ще ви научат как да търсите в няколко критерия, да връщате конкретен пример или всички съвпадения, да правите динамично търсене в няколко листа и др.
Това е втората част от поредицата, която ще ви помогне да се възползвате от силата на VLOOKUP в Excel. Примерите предполагат, че знаете как работи тази функция. Ако не е така, логично е да започнете с основните употреби на VLOOKUP в Excel.
Преди да продължим, нека ви припомня накратко синтаксиса:
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])Сега, когато всички са на едно мнение, нека разгледаме по-подробно примерите за разширената формула VLOOKUP:
Как да разгледате множество критерии
Функцията VLOOKUP на Excel е наистина полезна, когато става въпрос за търсене на определена стойност в база данни. Въпреки това тя няма една важна функция - синтаксисът ѝ позволява само една стойност за търсене. Но какво да правите, ако искате да търсите с няколко условия? Има няколко различни решения, от които можете да избирате.
Формула 1. VLOOKUP с два критерия
Да предположим, че имате списък с поръчки и искате да намерите количеството въз основа на 2 критерия, Име на клиента и Продукт Усложняващ фактор е, че всеки клиент е поръчал няколко продукта, както е показано в таблицата по-долу:
Обичайната формула VLOOKUP няма да работи в тази ситуация, тъй като връща първото намерено съвпадение въз основа на една стойност за търсене, която сте посочили.
За да преодолеете това, можете да добавите помощна колона и да обедините стойностите от две колони за търсене ( Клиент и Продукт ). Важно е помощната колона да бъде най-лявата колона в масива на таблицата, тъй като в нея Excel VLOOKUP винаги търси стойността за търсене.
Затова добавете колона отляво на таблицата и копирайте формулата по-долу в тази колона. Това ще попълни помощната колона със стойностите от колони B и C (символът за интервал е събран между тях за по-добра четливост):
=B2&" "&C2
И след това използвайте стандартна формула VLOOKUP и поставете двата критерия в lookup_value аргумент, разделени с интервал:
=VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)
Или въведете критериите в отделни клетки (G1 и G2 в нашия случай) и ги съединете:
=VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)
Тъй като искаме да върнем стойност от колона D, която е четвърта в масива на таблицата, използваме 4 за col_index_num . range_lookup Аргументът е зададен на FALSE, за да може Vlookup да търси точно съвпадение. На снимката по-долу е показан резултатът:
В случай че таблицата за търсене е в друг лист , включете името на листа във формулата VLOOKUP. Например:
=VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)
Алтернативно, създайте именуван диапазон за таблицата за търсене (например, Поръчки ), за да направите формулата по-лесна за четене:
=VLOOKUP(G1&" "&G2, Поръчки, 4, FALSE)
За повече информация вижте Как да прегледате от друг лист в Excel.
Забележка: За да работи правилно формулата, стойностите в помощната колона трябва да бъдат сбити по същия начин, както в lookup_value Например използвахме символ за интервал, за да отделим критериите както в помощната колона (B2&" "&C2), така и във формулата VLOOKUP (G1&" "&G2).
Формула 2. Excel VLOOKUP с множество условия
Теоретично можете да използвате горния подход за Vlookup за повече от два критерия. Има обаче няколко предупреждения. Първо, стойността за търсене е ограничена до 255 символа и второ, дизайнът на работния лист може да не позволява добавянето на помощна колона.
За щастие, Microsoft Excel често предлага повече от един начин за извършване на едно и също нещо. За Vlookup на няколко критерия можете да използвате комбинацията INDEX MATCH или функцията XLOOKUP, въведена наскоро в Office 365.
Например, за да търсите на базата на 3 различни стойности ( Дата , Име на клиента и Продукт ), използвайте една от следните формули:
=INDEX(D2:D11, MATCH(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), 0))
=XLOOKUP(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), D2:D11)
Къде:
- G1 е критерий 1 (дата)
- G2 е критерий 2 (име на клиент)
- G3 е критерий 3 (продукт)
- A2:A11 е диапазон на търсене 1 (дати)
- B2:B11 е диапазон за търсене 2 (имена на клиенти)
- C2:C11 е диапазон за търсене 3 (продукти)
- D2:D11 е обхватът на връщане (количество)
Забележка: Във всички версии, с изключение на Excel 365, INDEX MATCH трябва да се въведе като CSE формула за масиви чрез натискане на Ctrl + Shift + Enter. В Excel 365, който поддържа динамични масиви, тя работи и като обикновена формула.
За подробно обяснение на формулите вижте:
- XLOOKUP с множество критерии
- Формула INDEX MATCH с множество критерии
Как да използвате VLOOKUP, за да получите второто, третото или n-тото съвпадение
Както вече знаете, Excel VLOOKUP може да извлича само една съответстваща стойност, по-точно връща първото намерено съответствие. Но какво става, ако в масива за търсене има няколко съответствия и искате да получите втория или третия случай? Задачата звучи доста сложна, но решението съществува!
Формула 1. Vlookup N-ти пример
Да предположим, че в една колона са имената на клиентите, в друга - закупените от тях продукти, и търсите да намерите втория или третия продукт, закупен от даден клиент.
Най-простият начин е да добавите помощна колона в лявата част на таблицата, както направихме в първия пример. Но този път ще я попълним с имена на клиенти и номера на събития като " Джон Доу1 ", " Джон Доу2 " и т.н.
За да получите появата, използвайте функцията COUNTIF със смесена референция на обхвата (първата референция е абсолютна, а втората е относителна, например $B$2:B2). Тъй като относителната референция се променя в зависимост от позицията на клетката, в която е копирана формулата, в ред 3 тя ще стане $B$2:B3, в ред 4 - $B$2:B4 и т.н.
В комбинация с името на клиента (B2) формулата придобива следния вид:
=B2&COUNTIF($B$2:B2, B2)
Горната формула се намира в A2, след което я копирате надолу в толкова клетки, колкото е необходимо.
След това въведете името на целта и номера на появата в отделни клетки (F1 и F2) и използвайте формулата по-долу за Vlookup на конкретна поява:
=VLOOKUP(F1&F2, A2:C11, 3, FALSE)
Формула 2. Второ появяване на Vlookup
Ако търсите втория случай на стойността за търсене, можете да се справите без помощната колона. Вместо това създайте масива на таблицата динамично, като използвате функцията INDIRECT заедно с MATCH:
=VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)
Къде:
- E1 е стойността за търсене
- A2:A11 е диапазонът за търсене
- B11 е последната (долната дясна) клетка на таблицата за търсене
Обърнете внимание, че горната формула е написана за конкретен случай, при който клетките с данни в таблицата за търсене започват от ред 2. Ако таблицата ви е някъде в средата на листа, използвайте тази универсална формула, където A1 е горната лява клетка на таблицата за търсене, съдържаща заглавие на колона:
=VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE)
Как работи тази формула
Това е ключовата част от формулата, която създава динамичен обхват на vlookup :
INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")
Функцията MATCH, конфигурирана за точно съвпадение (0 в последния аргумент), сравнява целевото име (E1) със списъка с имена (A2:A11) и връща позицията на първото намерено съвпадение, която в нашия случай е 3. Това число ще се използва като начална координата на реда за обхвата vlookup, така че добавяме 2 към него (+1, за да изключим първия случай, и +1, за да изключим ред 1 със заглавията на колоните).Като алтернатива можете да използвате 1+ROW(A1), за да изчислите автоматично необходимата корекция въз основа на позицията на заглавния ред (A1 в нашия случай).
В резултат на това получаваме следния текстов низ, който INDIRECT преобразува в референция за диапазон:
INDIRECT("A"&5&":B11") -> A5:B11
Този диапазон се простира до table_array аргумент на VLOOKUP, който го принуждава да започне търсенето в ред 5, като пропуска първия случай на стойността за търсене:
VLOOKUP(E1, A5:B11, 2, FALSE)
Как да използвате Vlookup и да връщате множество стойности в Excel
Функцията VLOOKUP на Excel е създадена да връща само едно съвпадение. Има ли начин да се използва VLOOKUP за множество случаи? Да, има, но не е лесно. Това изисква комбинирано използване на няколко функции, като INDEX, SMALL и ROW е формула за масив.
Например по-долу може да се намерят всички случаи на срещане на стойността за търсене F2 в диапазона за търсене B2:B16 и да се върнат множество съвпадения от колона C:
{=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}
Има два начина за въвеждане на формулата в работния лист:
- Въведете формулата в първата клетка, натиснете Ctrl + Shift + Enter , след което я плъзнете надолу към още няколко клетки.
- Изберете няколко съседни клетки в една колона (F1:F11 на скрийншота по-долу), въведете формулата и натиснете Ctrl + Shift + Enter, за да я завършите.
Така или иначе, броят на клетките, в които въвеждате формулата, трябва да е равен или по-голям от максималния брой възможни съвпадения.
За подробно обяснение на логиката на формулата и повече примери вижте Как да VLOOKUP няколко стойности в Excel.
Как да търсите в редове и колони (двупосочно търсене)
Двупосочно търсене (известен още като търсене на матрица или 2-измервателно търсене ) е красива дума за търсене на стойност в пресечната точка на определен ред и колона. Има няколко различни начина за двуизмерно търсене в Excel, но тъй като фокусът на този урок е върху функцията VLOOKUP, естествено ще я използваме.
За този пример ще вземем таблицата по-долу с месечните продажби и ще разработим формула VLOOKUP, за да извлечем цифрата на продажбите за определен артикул през даден месец.
При имена на артикули в A2:A9, имена на месеци в B1:F1, целеви артикул в I1 и целеви месец в I2, формулата е следната:
=VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)
Как работи тази формула
Ядрото на формулата е стандартната функция VLOOKUP, която търси точно съвпадение със стойността за търсене в I1. Но тъй като не знаем в коя точно колона се намират продажбите за определен месец, не можем да предоставим номера на колоната директно на функцията col_index_num За да намерим тази колона, използваме следната функция MATCH:
MATCH(I2, A1:F1, 0)
Преведена на български, формулата гласи: потърсете стойността на I2 в A1:F1 и върнете относителната ѝ позиция в масива. Чрез въвеждане на 0 в третия аргумент инструктирате MATCH да намери стойност, точно равна на стойността за търсене (това е като да използвате FALSE за range_lookup аргумент на VLOOKUP).
Тъй като Мар е в четвъртата колона на масива за търсене, функцията MATCH връща 4, което води директно до col_index_num аргумент на VLOOKUP:
VLOOKUP(I1, A2:F9, 4, FALSE)
Обърнете внимание, че въпреки че имената на месеците започват в колона B, ние използваме A1:I1 за масива за търсене. Това се прави, за да може номерът, върнат от MATCH, да съответства на позицията на колоната в table_array на VLOOKUP.
За да научите повече начини за извършване на матрично търсене в Excel, моля, вижте INDEX MATCH MATCH и други формули за двумерно търсене.
Как да направите няколко Vlookup в Excel (вложен Vlookup)
Понякога може да се случи така, че основната таблица и таблицата за търсене да нямат нито една обща колона, което ви пречи да извършите Vlookup между двете таблици. Съществува обаче друга таблица, която не съдържа търсената информация, но има една обща колона с основната таблица и друга обща колона с таблицата за търсене.
На изображението по-долу е показана ситуацията:
Целта е да се копират цените в основната таблица въз основа на Идентификатори на елементите . Проблемът е, че таблицата с цените няма Идентификатори на елементите , което означава, че ще трябва да направим две Vlookups в една формула.
За по-голямо удобство нека първо създадем няколко именувани диапазона:
- Таблицата за търсене 1 се нарича Продукти (D3:E10)
- Таблицата за търсене 2 се нарича Цени ( G3:H10 )
Таблиците могат да се намират в един и същ или в различни работни листове.
А сега ще извършим т.нар. двойно Vlookup , известен още като вложен Vlookup .
Първо, направете формула VLOOKUP, за да намерите името на продукта в таблицата за търсене 1 (наречена Продукти ) въз основа на идентификатора на елемента (A3):
=VLOOKUP(A3, Продукти, 2, FALSE)
След това въведете горната формула в lookup_value аргумент на друга функция VLOOKUP за извличане на цените от таблица 2 (наречена Цени ) въз основа на името на продукта, върнато от вложената VLOOKUP:
=VLOOKUP(VLOOKUP(A3, Продукти, 2, FALSE), Цени, 2, FALSE)
Снимката на екрана по-долу показва нашата вложена формула Vlookup в действие:
Как да търсите динамично в няколко листа
Понякога може да имате данни в един и същ формат, разпределени в няколко работни листа. Целта ви е да изтеглите данни от определен лист в зависимост от ключовата стойност в дадена клетка.
Това може да се разбере по-лесно от един пример. Да речем, че имате няколко регионални отчета за продажбите в един и същи формат и искате да получите данни за продажбите на определен продукт в определени региони:
Както и в предишния пример, започваме с дефинирането на няколко имена:
- Диапазонът A2:B5 в листа CA е наименуван CA_Sales .
- Диапазонът A2:B5 в лист FL е наименуван FL_Sales .
- Диапазонът A2:B5 в лист KS е именуван KS_Sales .
Както можете да видите, всички именувани диапазони имат обща част ( Продажби ) и уникални части ( CA , FL , KS ). Моля, не забравяйте да наименувате диапазоните си по подобен начин, тъй като това е от съществено значение за формулата, която ще изградим.
Формула 1. INDIRECT VLOOKUP за динамично извличане на данни от различни листове
Ако задачата ви е да извличате данни от няколко листа, формулата VLOOKUP INDIRECT е най-доброто решение - тя е компактна и лесна за разбиране.
За този пример организираме обобщаващата таблица по следния начин:
- Въведете продуктите, които ви интересуват, в A2 и A3. Това са нашите стойности за търсене.
- Въведете уникалните части на посочените диапазони в B1, C1 и D1.
И сега конкатенираме клетката, съдържаща уникалната част (B1), с общата част ("_Sales") и подаваме получения низ към INDIRECT:
INDIRECT(B$1&"_Sales")
Функцията INDIRECT трансформира низа в име, което Excel може да разбере, и го поставяте в table_array аргумент на VLOOKUP:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
Горепосочената формула се пренася в B2, след което я копирате надолу и надясно.
Обърнете внимание, че в стойността за търсене ($A2) сме заключили координатата на колоната с абсолютна препратка към клетката, така че колоната да остане фиксирана, когато формулата се копира надясно. В препратката към B$1 сме заключили реда, защото искаме координатата на колоната да се промени и да предостави подходяща част от името на INDIRECT в зависимост от колоната, в която се копира формулата:
Ако основната ви таблица е организирана по различен начин, като стойностите за търсене са на един ред, а уникалните части от имената на диапазона - на една колона, тогава трябва да заключите координатата на реда в стойността за търсене (B$1) и координатата на колоната в частите от името ($A2):
=VLOOKUP(B$1, INDIRECT($A2&"_Sales"), 2, FALSE)
Формула 2. VLOOKUP и вложени IFs за преглеждане на няколко листа
В случаите, когато имате само два или три листа за търсене, можете да използвате сравнително проста формула VLOOKUP с вложени функции IF, за да изберете правилния лист въз основа на ключовата стойност в определена клетка:
=VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,"")), 2, FALSE)
Където $A2 е стойността за търсене (името на елемента), а B$1 е стойността на ключа (състоянието):
В този случай не е задължително да дефинирате имена и можете да използвате външни препратки, за да се обърнете към друг лист или работна книга.
За повече примери за формули вижте Как да използвате VLOOKUP в няколко листа в Excel.
Това е начинът за използване на VLOOKUP в Excel. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!
Практическа работна тетрадка за изтегляне
Разширени примери за формула VLOOKUP (.xlsx файл)