VLOOKUP avansat în Excel: multiplu, dublu, imbricate

  • Imparte Asta
Michael Brown

Aceste exemple vă vor învăța cum să faceți Vlookup pe mai multe criterii, să returnați o anumită instanță sau toate corespondențele, să faceți Vlookup dinamic în mai multe foi și multe altele.

Este a doua parte a seriei care vă va ajuta să valorificați puterea Excel VLOOKUP. Exemplele implică faptul că știți cum funcționează această funcție. Dacă nu, este logic să începeți cu utilizările de bază ale VLOOKUP în Excel.

Înainte de a merge mai departe, permiteți-mi să vă reamintesc pe scurt sintaxa:

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

Acum că toată lumea este pe aceeași lungime de undă, să analizăm mai îndeaproape exemplele avansate de formule VLOOKUP:

    Cum să Vlookup criterii multiple

    Funcția VLOOKUP din Excel este foarte utilă atunci când vine vorba de căutarea unei anumite valori într-o bază de date. Cu toate acestea, îi lipsește o caracteristică importantă - sintaxa sa permite doar o singură valoare de căutare. Dar dacă doriți să căutați cu mai multe condiții? Există câteva soluții diferite din care puteți alege.

    Formula 1. VLOOKUP cu două criterii

    Să presupunem că aveți o listă de comenzi și doriți să găsiți cantitatea pe baza a 2 criterii, Numele clientului și Produs Un factor care complică situația este faptul că fiecare client a comandat mai multe produse, așa cum se arată în tabelul de mai jos:

    O formulă VLOOKUP obișnuită nu va funcționa în această situație, deoarece returnează prima potrivire găsită pe baza unei singure valori de căutare pe care o specificați.

    Pentru a depăși această problemă, puteți adăuga o coloană ajutătoare și puteți concatena valorile din două coloane de căutare ( Client și Produs ) acolo. Este important ca coloana de ajutor să fie coloana cel mai din stânga din matricea tabelului, deoarece aceasta este coloana în care Excel VLOOKUP caută întotdeauna valoarea de căutare.

    Deci, adăugați o coloană în stânga tabelului dvs. și copiați formula de mai jos pe acea coloană. Aceasta va umple coloana de ajutor cu valorile din coloanele B și C (caracterul spațiu este concatenat între ele pentru o mai bună lizibilitate):

    =B2&" "&C2

    Apoi, folosiți o formulă standard VLOOKUP și plasați ambele criterii în lookup_value separate prin câte un spațiu:

    =VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)

    Sau, introduceți criteriile în celule separate (G1 și G2 în cazul nostru) și concatenați aceste celule:

    =VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)

    Deoarece dorim să returnăm o valoare din coloana D, care este a patra în matricea tabelului, folosim 4 pentru col_index_num . range_lookup este setat la FALSE pentru a Vlookup o potrivire exactă. Imaginea de mai jos arată rezultatul:

    În cazul în care tabelul de căutare se află în o altă foaie , includeți numele foii în formula VLOOKUP. De exemplu:

    =VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)

    Alternativ, creați un interval denumit pentru tabelul de căutare (de exemplu, Comenzi ) pentru a face formula mai ușor de citit:

    =VLOOKUP(G1&" "&G2, Orders, 4, FALSE)

    Pentru mai multe informații, consultați Cum se face Vlookup dintr-o altă foaie în Excel.

    Notă: Pentru ca formula să funcționeze corect, valorile din coloana de ajutor trebuie concatenate exact în același mod ca în coloana lookup_value De exemplu, am folosit un caracter de spațiu pentru a separa criteriile atât în coloana de ajutor (B2&" "&C2), cât și în formula VLOOKUP (G1&" "&G2).

    Formula 2. Excel VLOOKUP cu condiții multiple

    Teoretic, puteți utiliza abordarea de mai sus pentru a face Vlookup pentru mai mult de două criterii. Cu toate acestea, există câteva avertismente. În primul rând, o valoare de căutare este limitată la 255 de caractere și, în al doilea rând, este posibil ca designul foii de calcul să nu permită adăugarea unei coloane ajutătoare.

    Din fericire, Microsoft Excel oferă adesea mai multe moduri de a face același lucru. Pentru a face Vlookup pe mai multe criterii, puteți utiliza fie o combinație INDEX MATCH, fie funcția XLOOKUP introdusă recent în Office 365.

    De exemplu, pentru a căuta pe baza a 3 valori diferite ( Data , Numele clientului și Produs ), utilizați una dintre următoarele formule:

    =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)

    Unde:

    • G1 este criteriul 1 (data)
    • G2 este criteriul 2 (numele clientului)
    • G3 este criteriul 3 (produs)
    • A2:A11 este intervalul de căutare 1 (date)
    • B2:B11 este intervalul de căutare 2 (nume de clienți)
    • C2:C11 este intervalul de căutare 3 (produse)
    • D2:D11 este intervalul de returnare (cantitate)

    Notă. În toate versiunile, cu excepția Excel 365, INDEX MATCH trebuie introdus ca o formulă de matrice CSE, apăsând Ctrl + Shift + Enter. În Excel 365, care acceptă matrice dinamice, funcționează și ca o formulă obișnuită.

    Pentru o explicație detaliată a formulelor, vă rugăm să consultați:

    • XLOOKUP cu criterii multiple
    • Formula INDEX MATCH cu criterii multiple

    Cum se utilizează VLOOKUP pentru a obține al doilea, al treilea sau al n-lea meci

    După cum știți deja, Excel VLOOKUP poate prelua o singură valoare de potrivire, mai exact, returnează prima potrivire găsită. Dar ce se întâmplă dacă există mai multe potriviri în matricea de căutare și doriți să obțineți a doua sau a treia instanță? Sarcina pare destul de complicată, dar soluția există!

    Formula 1. Vlookup Nth instance

    Să presupunem că aveți numele clienților într-o coloană, produsele pe care le-au cumpărat în alta și că doriți să găsiți al doilea sau al treilea produs cumpărat de un anumit client.

    Cel mai simplu mod este să adăugăm o coloană de ajutor în stânga tabelului, așa cum am făcut în primul exemplu. Dar de data aceasta, o vom completa cu numele clienților și numerele de apariție ca " John Doe1 ", " John Doe2 ", etc.

    Pentru a obține apariția, utilizați funcția COUNTIF cu o referință mixtă a intervalului (prima referință este absolută, iar a doua este relativă, cum ar fi $B$2:B2). Deoarece referința relativă se schimbă în funcție de poziția celulei în care este copiată formula, în rândul 3 va deveni $B$2:B3, în rândul 4 - $B$2:B4 și așa mai departe.

    Concatenată cu numele clientului (B2), formula ia forma următoare:

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

    Formula de mai sus se introduce în A2, apoi se copiază în câte celule sunt necesare.

    După aceea, introduceți numele obiectivului și numărul de apariție în celule separate (F1 și F2) și utilizați formula de mai jos pentru a face Vlookup pentru o anumită apariție:

    =VLOOKUP(F1&F2, A2:C11, 3, FALSE)

    Formula 2. Vlookup a doua apariție

    Dacă sunteți în căutarea celui de-al doilea exemplu al valorii de căutare, puteți renunța la coloana de ajutor. În schimb, creați matricea tabelului în mod dinamic utilizând funcția INDIRECT împreună cu MATCH:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)

    Unde:

    • E1 este valoarea de căutare
    • A2:A11 este intervalul de căutare
    • B11 este ultima celulă (dreapta jos) din tabelul de căutare.

    Rețineți că formula de mai sus este scrisă pentru un caz specific în care celulele de date din tabelul de căutare încep în rândul 2. Dacă tabelul dvs. se află undeva în mijlocul foii, utilizați această formulă universală, în care A1 este celula din stânga sus a tabelului de căutare care conține un antet de coloană:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE), 2, FALSE)

    Cum funcționează această formulă

    Iată partea esențială a formulei care creează un interval de vlookup dinamic :

    INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")

    Funcția MATCH configurată pentru potrivire exactă (0 în ultimul argument) compară numele țintă (E1) cu lista de nume (A2:A11) și returnează poziția primei potriviri găsite, care este 3 în cazul nostru. Acest număr va fi utilizat ca coordonată a rândului de pornire pentru intervalul vlookup, așa că îi adăugăm 2 (+1 pentru a exclude prima instanță și +1 pentru a exclude rândul 1 cu antetele coloanelor).Alternativ, puteți utiliza 1+ROW(A1) pentru a calcula automat ajustarea necesară pe baza poziției rândului de antet (A1 în cazul nostru).

    Ca rezultat, obținem următorul șir de text, pe care INDIRECT îl convertește într-o referință de interval:

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

    Acest interval merge până la tabel_array al lui VLOOKUP, forțându-l să înceapă căutarea în rândul 5, lăsând în afara primei instanțe a valorii de căutare:

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

    Cum să Vlookup și să returneze mai multe valori în Excel

    Funcția Excel VLOOKUP este concepută pentru a returna doar o singură potrivire. Există o modalitate de a face Vlookup în mai multe cazuri? Da, există, deși nu este una ușoară. Acest lucru necesită o utilizare combinată a mai multor funcții, cum ar fi INDEX, SMALL și ROW este o formulă de matrice.

    De exemplu, următorul exemplu poate găsi toate aparițiile valorii de căutare F2 în intervalul de căutare B2:B16 și poate returna mai multe corespondențe din coloana C:

    {=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}

    Există două moduri de a introduce formula în foaia de calcul:

    1. Tastați formula în prima celulă, apăsați Ctrl + Shift + Enter , apoi trageți-o în jos în alte câteva celule.
    2. Selectați mai multe celule adiacente dintr-o singură coloană (F1:F11 în imaginea de mai jos), introduceți formula și apăsați Ctrl + Shift + Enter pentru a o completa.

    În orice caz, numărul de celule în care introduceți formula trebuie să fie egal sau mai mare decât numărul maxim de potriviri posibile.

    Pentru o explicație detaliată a logicii formulei și pentru mai multe exemple, consultați Cum se utilizează VLOOKUP pentru mai multe valori în Excel.

    Cum se face Vlookup în rânduri și coloane (căutare bidirecțională)

    Căutare în două direcții (aka căutarea matricei sau 2-dimensional lookup ) este un cuvânt sofisticat pentru a căuta o valoare la intersecția dintre un anumit rând și o anumită coloană. Există câteva moduri diferite de a face căutări bidimensionale în Excel, dar, deoarece acest tutorial se concentrează pe funcția VLOOKUP, o vom folosi în mod natural.

    Pentru acest exemplu, vom lua tabelul de mai jos cu vânzările lunare și vom elabora o formulă VLOOKUP pentru a prelua cifra de vânzări pentru un anumit articol într-o anumită lună.

    Cu numele articolelor în A2:A9, numele lunilor în B1:F1, articolul țintă în I1 și luna țintă în I2, formula este următoarea:

    =VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)

    Cum funcționează această formulă

    Elementul central al formulei este funcția standard VLOOKUP care caută o potrivire exactă cu valoarea de căutare din I1. Dar, deoarece nu știm exact în ce coloană se află vânzările pentru o anumită lună, nu putem furniza numărul coloanei direct către funcția col_index_num Pentru a găsi coloana respectivă, folosim următoarea funcție MATCH:

    MATCH(I2, A1:F1, 0)

    Tradusă în limba engleză, formula spune: caută valoarea I2 în A1:F1 și returnează poziția sa relativă în matrice. Prin furnizarea lui 0 la al treilea argument, îi ordonați lui MATCH să găsească valoarea exact egală cu valoarea de căutare (este ca și cum ați folosi FALSE pentru range_lookup argument al VLOOKUP).

    De la Mar se află în a patra coloană din tabloul de căutare, funcția MATCH returnează 4, care se duce direct în coloana col_index_num argument al VLOOKUP:

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

    Vă rugăm să fiți atenți la faptul că, deși numele lunilor încep în coloana B, folosim A1:I1 pentru matricea de căutare. Acest lucru se face pentru ca numărul returnat de MATCH să corespundă poziției coloanei din tabel_array de VLOOKUP.

    Pentru a afla mai multe modalități de a efectua căutări matriciale în Excel, consultați INDEX MATCH MATCH MATCH și alte formule pentru căutări bidimensionale.

    Cum să faceți mai multe Vlookup în Excel (Vlookup imbricate)

    Uneori se poate întâmpla ca tabelul principal și tabelul de căutare să nu aibă o singură coloană în comun, ceea ce vă împiedică să efectuați un Vlookup între două tabele. Cu toate acestea, există un alt tabel, care nu conține informațiile pe care le căutați, dar care are o coloană comună cu tabelul principal și o altă coloană comună cu tabelul de căutare.

    Imaginea de mai jos ilustrează situația:

    Scopul este de a copia prețurile în tabelul principal pe baza ID-uri de articol Problema este că tabelul care conține prețurile nu are codul ID-uri de articol , ceea ce înseamnă că va trebui să facem două Vlookup-uri într-o singură formulă.

    Pentru comoditate, haideți să creăm mai întâi câteva intervale numite:

    • Tabelul de căutare 1 se numește Produse (D3:E10)
    • Tabelul de căutare 2 se numește Prețuri ( G3:H10 )

    Tabelele pot fi în aceeași foaie de calcul sau în foi de calcul diferite.

    Și acum, vom efectua așa-numitul dublu Vlookup , alias Vlookup imbricate .

    În primul rând, creați o formulă VLOOKUP pentru a găsi numele produsului în tabelul Lookup 1 (numit Produse ) pe baza id-ului articolului (A3):

    =VLOOKUP(A3, Produse, 2, FALSE)

    Apoi, puneți formula de mai sus în fișierul lookup_value argument al unei alte funcții VLOOKUP pentru a extrage prețurile din tabelul Lookup 2 (numit Prețuri ) pe baza numelui produsului returnat de VLOOKUP imbricate:

    =VLOOKUP(VLOOKUP(A3, Produse, 2, FALSE), Prețuri, 2, FALSE)

    Captura de ecran de mai jos arată formula noastră Vlookup imbricata în acțiune:

    Cum să Vlookup mai multe foi în mod dinamic

    Uneori, este posibil să aveți date în același format împărțite pe mai multe foi de calcul, iar scopul dvs. este de a extrage date dintr-o anumită foaie în funcție de valoarea cheie dintr-o anumită celulă.

    Să spunem că aveți câteva rapoarte de vânzări regionale în același format și că doriți să obțineți cifrele de vânzări pentru un anumit produs în anumite regiuni:

    Ca și în exemplul anterior, începem prin a defini câteva nume:

    • Intervalul A2:B5 din foaia CA se numește CA_Vânzări .
    • Intervalul A2:B5 din foaia FL se numește FL_Vânzări .
    • Intervalul A2:B5 din foaia KS se numește KS_Sales .

    După cum puteți vedea, toate intervalele numite au o parte comună ( Vânzări ) și părți unice ( CA , FL , KS ). Vă rugăm să vă asigurați că denumiți intervalele într-un mod similar, deoarece este esențial pentru formula pe care o vom construi.

    Formula 1. VLOOKUP INDIRECT pentru a extrage în mod dinamic date din foi diferite

    Dacă sarcina dvs. este de a prelua date din mai multe foi, o formulă VLOOKUP INDIRECT este cea mai bună soluție - compactă și ușor de înțeles.

    Pentru acest exemplu, organizăm tabelul recapitulativ în acest mod:

    • Introduceți produsele de interes în A2 și A3. Acestea sunt valorile noastre de căutare.
    • Introduceți părțile unice ale intervalelor numite în B1, C1 și D1.

    Și acum, concatenăm celula care conține partea unică (B1) cu partea comună ("_Sales") și introducem șirul rezultat în INDIRECT:

    INDIRECT(B$1&"_Vânzări")

    Funcția INDIRECT transformă șirul de caractere într-un nume pe care Excel îl poate înțelege, iar tu îl pui în rubrica tabel_array argument al VLOOKUP:

    =VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)

    Formula de mai sus merge la B2, apoi o copiați în jos și la dreapta.

    Vă rugăm să fiți atenți la faptul că, în valoarea de căutare ($A2), am blocat coordonatele coloanei cu referință absolută de celulă, astfel încât coloana să rămână fixă atunci când formula este copiată în dreapta. În referința B$1, am blocat rândul deoarece dorim ca coordonatele coloanei să se schimbe și să furnizeze o parte de nume corespunzătoare la INDIRECT în funcție de coloana în care este copiată formula:

    În cazul în care tabelul principal este organizat diferit, valorile de căutare într-un rând și părțile unice ale numelor intervalului într-o coloană, atunci ar trebui să blocați coordonata rândului în valoarea de căutare (B$1) și coordonata coloanei în părțile de nume ($A2):

    =VLOOKUP(B$1, INDIRECT($A2&"_Sales"), 2, FALSE)

    Formula 2. VLOOKUP și IF-uri imbricate pentru a căuta mai multe foi de calcul

    În situația în care aveți doar două sau trei foi de căutare, puteți utiliza o formulă VLOOKUP destul de simplă cu funcții IF imbricate pentru a selecta foaia corectă pe baza valorii cheie dintr-o anumită celulă:

    =VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,"")), 2, FALSE), 2, FALSE)

    Unde $A2 este valoarea de căutare (numele articolului), iar B$1 este valoarea cheie (starea):

    În acest caz, nu trebuie neapărat să definiți nume și puteți utiliza referințe externe pentru a face trimitere la o altă foaie sau registru de lucru.

    Pentru mai multe exemple de formule, consultați Cum să utilizați VLOOKUP pe mai multe foi în Excel.

    Iată cum se utilizează VLOOKUP în Excel. Vă mulțumesc pentru lectură și sper să ne vedem pe blog săptămâna viitoare!

    Caietul de practică pentru descărcare

    Exemple avansate de formule VLOOKUP (fișier .xlsx)

    Michael Brown este un pasionat de tehnologie dedicat, cu o pasiune pentru simplificarea proceselor complexe folosind instrumente software. Cu mai mult de un deceniu de experiență în industria tehnologiei, el și-a perfecționat abilitățile în Microsoft Excel și Outlook, precum și în Google Sheets și Docs. Blogul lui Michael este dedicat împărtășirii cunoștințelor și experienței sale cu alții, oferind sfaturi și tutoriale ușor de urmat pentru îmbunătățirea productivității și eficienței. Indiferent dacă sunteți un profesionist experimentat sau un începător, blogul lui Michael oferă informații valoroase și sfaturi practice pentru a profita la maximum de aceste instrumente software esențiale.