Напредно VLOOKUP во Excel: повеќекратно, двојно, вгнездено

  • Споделете Го Ова
Michael Brown

Овие примери ќе ве научат како да вметнете повеќе критериуми, да вратите одредена инстанца или сите совпаѓања, да правите динамичен Vlookup во повеќе листови и повеќе.

Тоа е вториот дел од серијата која ќе ви помогне да ја искористите моќта на Excel VLOOKUP. Примерите имплицираат дека знаете како функционира оваа функција. Ако не, има разум да започнеме со основните употреби на VLOOKUP во Excel.

Пред да продолжиме понатаму, дозволете ми накратко да ве потсетам на синтаксата:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup] )

Сега кога сите се на иста страница, ајде внимателно да ги погледнеме примерите на напредната формула VLOOKUP:

    Како да се вчитаат повеќе критериуми

    Екселот Функцијата VLOOKUP е навистина корисна кога станува збор за пребарување низ базата на податоци за одредена вредност. Сепак, му недостасува важна карактеристика - неговата синтакса дозволува само една вредност за пребарување. Но, што ако сакате да погледнете нагоре со неколку услови? Постојат неколку различни решенија од кои можете да изберете.

    Формула 1. VLOOKUP со два критериуми

    Да претпоставиме дека имате листа на нарачки и сакате да ја пронајдете количината врз основа на 2 критериуми, Име на клиент и Производ . Фактор што комплицира е тоа што секој клиент нарачал повеќе производи, како што е прикажано во табелата подолу:

    Вообичаената формула VLOOKUP нема да работи во оваа ситуација бидејќи го враќа првото пронајдено натпревар врз основа на арегиони:

    Како во претходниот пример, започнуваме со дефинирање на неколку имиња:

    • Опсегот A2:B5 во листот CA е именуван CA_Sales .
    • Опсегот A2:B5 во FL листот е именуван FL_Sales .
    • Опсегот A2:B5 во листот KS е именуван KS_Sales .

    Како што можете да видите, сите именувани опсези имаат заеднички дел ( Продажба ) и уникатни делови ( CA , FL , КС ). Ве молиме погрижете се да ги именувате вашите опсези на сличен начин бидејќи тоа е од суштинско значење за формулата што ќе ја изградиме.

    Формула 1. ИНДИРЕКТЕН VLOOKUP за динамичко повлекување податоци од различни листови

    Ако вашата задача е да се преземат податоци од повеќе листови, формулата VLOOKUP INDIRECT е најдоброто решение – компактно и лесно разбирливо.

    За овој пример, ја организираме резимената табела на овој начин:

    • Внесете ги производите од интерес во А2 и А3. Тоа се нашите вредности за пребарување.
    • Внесете ги уникатните делови од именуваните опсези во 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 и вгнездени IF за пребарување на повеќе листови

    Во ситуација кога имате само два или три листа за пребарување, можете да користите прилично едноставна формула 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датотека)

    единечна барана вредност што ја наведовте.

    За да го надминете ова, можете да додадете помошна колона и да ги споите вредностите од две колони за пребарување ( Клиент и Производ ) таму. Важно е помошната колона да биде најлевата колона во низата табели затоа што 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, Orders, 4, FALSE)

    За повеќе информации, погледнете Како даVlooup од друг лист во Excel.

    Забелешка. За формулата да работи правилно, вредностите во помошната колона треба да се спојат на ист начин како и во аргументот lookup_value . На пример, користевме знак за празно место за да ги одвоиме критериумите и во помошната колона (B2&" "&C2) и формулата VLOOKUP (G1&" "&G2).

    Формула 2. Excel VLOOKUP со повеќе услови

    Во теорија, можете да го користите горенаведениот пристап за Vlookup повеќе од два критериуми. Сепак, постојат неколку предупредувања. Прво, вредноста за пребарување е ограничена на 255 знаци и второ, дизајнот на работниот лист можеби не дозволува додавање помошна колона.

    За среќа, Microsoft Excel често обезбедува повеќе од еден начин да се направи истото. За да соберете повеќе критериуми, можете да користите или комбинација 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, INDEXMATCH треба да се внесе како формула за низа CSE со притискање на Ctrl + Shift + Enter. Во Excel 365 кој поддржува динамички низи, работи и како редовна формула.

    За детално објаснување на формулите, погледнете:

    • XLOOKUP со повеќе критериуми
    • INDEX MATCH формула со повеќе критериуми

    Како да користете VLOOKUP за да добиете 2-ри, 3-ти или n-ти совпаѓања

    Како што веќе знаете, Excel VLOOKUP може да добие само една вредност што одговара, поточно, го враќа првото пронајдено совпаѓање. Но, што ако има неколку совпаѓања во низата за пребарување и сакате да ја добиете втората или третата инстанца? Задачата звучи прилично сложена, но решението постои!

    Формула 1. Vlookup N-ти пример

    Да претпоставиме дека имате имиња на клиенти во една колона, производите што ги купиле во друга, а вие барате да го пронајдете вториот или третиот производ купен од даден клиент.

    Наједноставниот начин е да додадете помошна колона лево од табелата како што направивме во првиот пример. Но, овој пат, ќе го пополниме со имиња на клиенти и броеви на појави како „ John Doe1 “, „ John Doe2 “, итн.

    За да се добие појавата, користете ја функцијата COUNTIF со референца со мешан опсег (првата референца е апсолутна, а втората е релативна како $B$2:B2). Бидејќи релативната референца се менува врз основа на позицијата на ќелијата каде што формулата е копирана, во редот 3 ќе стане $B$2:B3, во редот 4 -$B$2:B4, и така натаму.

    Поврзана со името на клиентот (B2), формулата ја има оваа форма:

    =B2&COUNTIF($B$2:B2, B2)

    Горната формула оди на A2 , а потоа го копирате во онолку ќелии колку што е потребно.

    Потоа, внесете го целното име и бројот на појава во посебни ќелии (F1 и F2) и користете ја формулата подолу за да изберете одредена појава:

    =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) за да го пресметате потребното прилагодување автоматски врз основа на позицијата на редот за заглавие (А1 во нашиот случај).

    Како резултат, ја добиваме следната текстуална низа, која INDIRECT се претвора во референца за опсег:

    INDIRECT("A"&5&":B11") -> A5:B11

    Овој опсег оди во аргументот table_array на VLOOKUP, принудувајќи го да започне со пребарување во редот 5, оставајќи ја првата инстанца на вредноста за пребарување:

    VLOOKUP(E1, A5:B11, 2, FALSE)

    Како да се Vlookup и да се вратат повеќе вредности во Excel

    Функцијата Excel VLOOKUP е дизајнирана да враќа само едно совпаѓање. Дали има начин за 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)),"")}

    Постојат 2 начини да ја внесете формулата во вашиот работен лист:

    1. Впишете ја формулата во првата ќелија, притиснете Ctrl + Shift + Enter , а потоа повлечете ја надолу во уште неколку ќелии.
    2. Изберете неколку соседни ќелии во една колона (F1:F11 на екранот подолу), напишете ја формулата и притиснете Ctrl +Shift + Enter за да се заврши.

    Во секој случај, бројот на ќелии во кои ја внесувате формулата треба да биде еднаков или поголем од максималниот број можни совпаѓања.

    За детално објаснување на логиката на формулата и повеќе примери, погледнете Како да ВЛОКУПИРАТЕ повеќе вредности во 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(I2, A1:F1, 0)

    Преведено на англиски, формулата вели: побарајте ја вредноста I2 во A1:F1 и вратете ја нејзината релативна позиција во низата. Со доставување 0 на третиот аргумент, му наложувате на MATCH да ја пронајде вредноста точно еднаква на вредноста за пребарување (тоа е како да користите FALSE за аргументот range_lookup на VLOOKUP).

    Бидејќи Mar е во 4-та колона во низата за пребарување, функцијата MATCH враќа 4, што оди директно на аргументот col_index_num на VLOOKUP:

    VLOOKUP(I1, A2:F9, 4, FALSE)

    Ве молиме обрнете внимание дека иако имињата на месеците започнуваат во колоната Б, ние користиме A1:I1 за низата за пребарување. Ова е направено со цел бројот вратен со MATCH да одговара на позицијата на колоната во table_array на VLOOKUP.

    За да дознаете повеќе начини за пребарување на матрици во Excel, погледнете го INDEX MATCH MATCH и други формули за 2-димензионално пребарување.

    Како да направите повеќекратно Vlookup во Excel (вгнезден Vlookup)

    Понекогаш може да се случи вашата главна табела и табела за пребарување да немаат една колона во заеднички, што ве спречува да направите Vlookup помеѓу две табели. Сепак, постои друга табела, која не ги содржи информациите што ги барате, туку има една заедничка колона со главната табела и друга заедничка колона со табелата за пребарување.

    На сликата подолу ја илустрира ситуацијата:

    Целта е да се копираат цените во главната табела врз основа на Идентификатори на ставки . Проблемот е што табелата што ги содржи цените нема Идентификатори на ставки , што значи дека ќе треба да направиме два Vlookups во една формула.

    Заради погодност, ајде да создадеме неколку прво именувани опсези:

    • Табела за пребарување 1 е именувана Производи (D3:E10)
    • Табела за пребарување 2 е именувана Цени ( G3:H10 )

    Табелите можат да бидат во исти или различни работни листови.

    И сега, ќе го извршиме т.н. double Vlookup , ака вгнезден Vlookup .

    Прво, направете формула VLOOKUP за да го најдете името на производот во табелата за пребарување 1 (наречена Производи ) врз основа на ставката id (A3):

    =VLOOKUP(A3, Products, 2, FALSE)

    Следно, ставете ја горната формула во аргументот lookup_value на друга VLOOKUP функција за да ги повлечете цените од табелата за пребарување 2 (именувана Цени ) врз основа на името на производот вратено од вгнездениот VLOOKUP:

    =VLOOKUP(VLOOKUP(A3, Products, 2, FALSE), Prices, 2, FALSE)

    Сликата од екранот подолу ја покажува нашата вгнездена формула Vlookup во акција:

    Како динамично да пребарувате повеќе листови

    Понекогаш, y може да имате податоци во ист формат поделени на неколку работни листови. А вашата цел е да повлечете податоци од одреден лист во зависност од клучната вредност во дадена ќелија.

    Ова може да биде полесно да се разбере од пример. Да речеме, имате неколку регионални извештаи за продажба во ист формат и барате да ги добиете бројките за продажба за одреден производ во одредени

    Мајкл Браун е посветен технолошки ентузијаст со страст за поедноставување на сложените процеси користејќи софтверски алатки. Со повеќе од една деценија искуство во технолошката индустрија, тој ги усоврши своите вештини во Microsoft Excel и Outlook, како и Google Sheets и Docs. Блогот на Мајкл е посветен на споделување на своето знаење и експертиза со другите, обезбедувајќи лесни за следење совети и упатства за подобрување на продуктивноста и ефикасноста. Без разлика дали сте искусен професионалец или почетник, блогот на Мајкл нуди вредни сознанија и практични совети за да го извлечете максимумот од овие основни софтверски алатки.