Excel INDEX MATCH vs. VLOOKUP - exemple de formule

  • Imparte Asta
Michael Brown

Acest tutorial arată cum se utilizează INDEX și MATCH în Excel și cum este mai bine decât VLOOKUP.

În câteva articole recente, am făcut un efort bun pentru a explica elementele de bază ale funcției VLOOKUP pentru începători și pentru a oferi exemple de formule VLOOKUP mai complexe pentru utilizatorii experimentați. Și acum, voi încerca dacă nu să vă conving să renunțați la utilizarea VLOOKUP, atunci cel puțin să vă arăt o modalitate alternativă de a face o căutare verticală în Excel.

"La ce-mi trebuie asta?", vă veți întreba. Pentru că VLOOKUP are numeroase limitări care vă pot împiedica să obțineți rezultatul dorit în multe situații. Pe de altă parte, combinația INDEX MATCH este mai flexibilă și are multe caracteristici minunate care o fac superioară lui VLOOKUP în multe privințe.

    Funcțiile Excel INDEX și MATCH - noțiuni de bază

    Deoarece scopul acestui tutorial este de a demonstra un mod alternativ de a realiza o vlookup în Excel prin utilizarea unei combinații a funcțiilor INDEX și MATCH, nu vom insista prea mult asupra sintaxei și utilizărilor acestora. Vom acoperi doar minimul necesar pentru a înțelege ideea generală și apoi vom examina în profunzime exemple de formule care dezvăluie toate avantajele utilizării funcției INDEX MATCH în locul funcției VLOOKUP.

    Funcția INDEX - sintaxă și utilizare

    Funcția Excel INDEX returnează o valoare într-o matrice pe baza numerelor de rând și coloană pe care le specificați. Sintaxa funcției INDEX este simplă:

    INDEX(array, row_num, [column_num])

    Iată o explicație foarte simplă a fiecărui parametru:

    • array - un interval de celule din care doriți să returnați o valoare.
    • număr_ rând - numărul rândului din matrice din care doriți să returnați o valoare. Dacă este omis, este necesar numărul coloanei.
    • număr_coloană - numărul coloanei din matrice din care doriți să returnați o valoare. Dacă este omis, row_num este necesar.

    Pentru mai multe informații, vă rugăm să consultați funcția Excel INDEX.

    Și iată un exemplu de formulă INDEX în forma sa cea mai simplă:

    =INDEX(A1:C10,2,3)

    Formula caută în celulele A1 până la C10 și returnează o valoare a celulei din al doilea rând și a treia coloană, adică celula C2.

    Foarte ușor, nu-i așa? Cu toate acestea, atunci când lucrați cu date reale, cu greu veți ști vreodată ce rând și ce coloană doriți, și aici funcția MATCH este utilă.

    Funcția MATCH - sintaxă și utilizare

    Funcția Excel MATCH caută o valoare de căutare într-un interval de celule și returnează valoarea poziția relativă a valorii respective în intervalul respectiv.

    Sintaxa funcției MATCH este următoarea:

    MATCH(lookup_value, lookup_array, [match_type])
    • lookup_value - numărul sau valoarea textului pe care îl căutați.
    • lookup_array - un interval de celule care fac obiectul căutării.
    • match_type - specifică dacă se returnează o potrivire exactă sau cea mai apropiată potrivire:
      • 1 sau omis - găsește cea mai mare valoare care este mai mică sau egală cu valoarea de căutare. Necesită sortarea matricei de căutare în ordine crescătoare.
      • 0 - găsește prima valoare care este exact egală cu valoarea de căutare. În combinația INDEX / MATCH, aproape întotdeauna aveți nevoie de o potrivire exactă, așa că setați al treilea argument al funcției MATCH la 0.
      • -1 - găsește cea mai mică valoare care este mai mare sau egală cu valoarea_de_consultare. Necesită sortarea tabloului de căutare în ordine descrescătoare.

    De exemplu, dacă intervalul B1:B3 conține valorile "New-York", "Paris", "Londra", formula de mai jos returnează numărul 3, deoarece "Londra" este a treia intrare din interval:

    =MATCH("London",B1:B3,0)

    Pentru mai multe informații, vă rugăm să consultați funcția Excel MATCH.

    La prima vedere, utilitatea funcției MATCH poate părea îndoielnică. Cui îi pasă de poziția unei valori într-un interval? Ceea ce dorim să știm este valoarea în sine.

    Permiteți-mi să vă reamintesc că poziția relativă a valorii de căutare (adică numerele de rând și de coloană) este exact ceea ce trebuie să furnizați la număr_ rând și număr_coloană După cum vă amintiți, Excel INDEX poate găsi valoarea de la intersecția dintre un rând și o coloană, dar nu poate determina exact care este rândul și coloana dorite.

    Cum se utilizează funcția INDEX MATCH în Excel

    Acum că știți elementele de bază, cred că a început deja să aibă sens modul în care MATCH și INDEX lucrează împreună. Pe scurt, INDEX găsește valoarea de căutare prin numerele de coloană și rând, iar MATCH furnizează aceste numere. Asta este!

    Pentru căutarea verticală, utilizați funcția MATCH doar pentru a determina numărul rândului și furnizați intervalul de coloane direct la INDEX:

    INDEX ( pentru a returna o valoare din coloana , MATCH ( valoarea de căutare , coloană pentru a privi în sus față de , 0))

    Încă mai întâmpinați dificultăți în a înțelege acest lucru? Poate că este mai ușor de înțeles cu ajutorul unui exemplu. Să presupunem că aveți o listă de capitale naționale și populația acestora:

    Pentru a afla populația unei anumite capitale, de exemplu capitala Japoniei, utilizați următoarea formulă INDEX MATCH:

    =INDEX(C2:C10, MATCH("Japonia", A2:A10, 0))

    Acum, să analizăm ce face de fapt fiecare componentă a acestei formule:

    • Funcția MATCH caută valoarea de căutare "Japan" în intervalul A2:A10 și returnează numărul 3, deoarece "Japan" este a treia în matricea de căutare.
    • Numărul rândului merge direct la număr_ rând din INDEX, care îi ordonă să returneze o valoare din rândul respectiv.

    Astfel, formula de mai sus se transformă într-un simplu INDEX(C2:C,3) care spune să caute în celulele C2 până la C10 și să extragă valoarea din a treia celulă din intervalul respectiv, adică C4, deoarece începem să numărăm de la al doilea rând.

    Nu doriți să introduceți orașul în formulă? Introduceți-l într-o celulă, de exemplu F1, furnizați referința celulei la MATCH și veți obține o formulă de căutare dinamică:

    =INDEX(C2:C10, MATCH(F1,A2:A10,0))

    Notă importantă! Numărul de rânduri din array argumentul INDEX ar trebui să corespundă numărului de rânduri din lookup_array din MATCH, în caz contrar formula va produce un rezultat incorect.

    Stați, stați... de ce nu folosim pur și simplu următoarea formulă Vlookup? Ce rost are să pierdem timpul încercând să ne dăm seama de întorsăturile obscure ale Excel MATCH INDEX?

    =VLOOKUP(F1, A2:C10, 3, FALSE)

    În acest caz, nu are niciun rost :) Acest exemplu simplu este doar în scop demonstrativ, pentru a vă face o idee despre cum funcționează împreună funcțiile INDEX și MATCH. Alte exemple care urmează mai jos vă vor arăta adevărata putere a acestei combinații care face față cu ușurință multor scenarii complexe în care VLOOKUP se poticnește.

    Sfaturi:

    • În Excel 365 și Excel 2021, puteți utiliza o formulă INDEX XMATCH mai modernă.
    • Pentru Google Sheets, consultați exemple de formule cu INDEX MATCH în acest articol.

    INDEX MATCH vs. VLOOKUP

    Atunci când se decide ce funcție să se utilizeze pentru căutările verticale, majoritatea guru Excel sunt de acord că INDEX MATCH este mult mai bună decât VLOOKUP. Cu toate acestea, mulți oameni încă rămân cu VLOOKUP, în primul rând, pentru că este mai simplă și, în al doilea rând, pentru că nu înțeleg pe deplin toate beneficiile utilizării formulei INDEX MATCH în Excel. Fără o astfel de înțelegere, nimeni nu este dispus să investească timpul lor pentru a învăța o formulă mai complexă desintaxă.

    Mai jos, voi evidenția principalele avantaje ale MATCH INDEX față de VLOOKUP, iar dumneavoastră veți decide dacă este o achiziție demnă de adăugat la arsenalul Excel.

    4 motive principale pentru a utiliza INDEX MATCH în loc de VLOOKUP

    1. Căutarea de la dreapta la stânga. După cum știe orice utilizator educat, VLOOKUP nu se poate uita în stânga sa, ceea ce înseamnă că valoarea de căutare ar trebui să se afle întotdeauna în cea mai din stânga coloană a tabelului. INDEX MATCH poate face căutarea în stânga cu ușurință! Exemplul următor îl arată în acțiune: Cum să faci Vlookup o valoare în stânga în Excel.
    2. Introduceți sau ștergeți coloane în siguranță. Formulele VLOOKUP se strică sau oferă rezultate incorecte atunci când o nouă coloană este ștearsă sau adăugată la un tabel de căutare, deoarece sintaxa VLOOKUP necesită specificarea numărului de index al coloanei din care doriți să extrageți datele. În mod natural, atunci când adăugați sau ștergeți coloane, numărul de index se modifică.

      Cu INDEX MATCH, specificați intervalul de coloane de retur, nu un număr de index. Prin urmare, sunteți liber să inserați și să eliminați oricâte coloane doriți fără a vă îngrijora de actualizarea fiecărei formule asociate.

    3. Nu există nicio limită pentru dimensiunea unei valori de căutare. Atunci când utilizați funcția VLOOKUP, lungimea totală a criteriilor de căutare nu poate depăși 255 de caractere, altfel veți sfârși prin a primi eroarea #VALUE! Așadar, dacă setul de date conține șiruri lungi, INDEX MATCH este singura soluție funcțională.
    4. Viteză de procesare mai mare. Dacă tabelele dvs. sunt relativ mici, nu va exista nicio diferență semnificativă în ceea ce privește performanța Excel. Dar dacă foile de lucru conțin sute sau mii de rânduri și, în consecință, sute sau mii de formule, MATCH INDEX va funcționa mult mai rapid decât VLOOKUP, deoarece Excel va trebui să proceseze doar coloanele de căutare și de returnare, mai degrabă decât întreaga matrice de tabele.

      Impactul VLOOKUP asupra performanței Excel poate fi deosebit de vizibil dacă registrul de lucru conține formule de matrice complexe, cum ar fi VLOOKUP și SUM. Ideea este că verificarea fiecărei valori din matrice necesită un apel separat al funcției VLOOKUP. Astfel, cu cât matricea conține mai multe valori și cu cât aveți mai multe formule de matrice într-un registru de lucru, cu atât Excel funcționează mai lent.

    Excel INDEX MATCH - exemple de formule

    Cunoscând motivele pentru a învăța funcția MATCH INDEX, să trecem la partea cea mai interesantă și să vedem cum puteți aplica cunoștințele teoretice în practică.

    Formula INDEX MATCH pentru a privi în sus de la dreapta la stânga

    După cum am menționat deja, VLOOKUP nu se poate uita în stânga sa. Deci, dacă valorile de căutare nu se află în coloana cea mai din stânga, nu există nicio șansă ca o formulă Vlookup să vă aducă rezultatul dorit. Funcția INDEX MATCH din Excel este mai versatilă și nu îi pasă cu adevărat unde se află coloanele de căutare și de returnare.

    Pentru acest exemplu, vom adăuga coloana Clasament în stânga tabelului nostru de eșantionare și vom încerca să ne dăm seama cum se situează capitala Rusiei, Moscova, în ceea ce privește populația.

    Cu valoarea de căutare din G1, utilizați următoarea formulă pentru a căuta în C2:C10 și a returna o valoare corespunzătoare din A2:A10:

    =INDEX(A2:A10,MATCH(G1,C2:C10,0))

    Sfat: Dacă intenționați să utilizați formula INDEX MATCH pentru mai multe celule, asigurați-vă că blocați ambele intervale cu referințe absolute de celule (cum ar fi $A$2:$A$10 și $C$2:4C$10), astfel încât acestea să nu fie distorsionate la copierea formulei.

    INDEX MATCH MATCH pentru a căuta în rânduri și coloane

    În exemplele de mai sus, am folosit INDEX MATCH ca înlocuitor al clasicului VLOOKUP pentru a returna o valoare dintr-un interval predefinit de o coloană. Dar ce se întâmplă dacă aveți nevoie să căutați în mai multe rânduri și coloane? Cu alte cuvinte, ce se întâmplă dacă doriți să efectuați așa-numitul matrice sau cu două căi căutare?

    Acest lucru poate părea complicat, dar formula este foarte asemănătoare cu funcția de bază Excel INDEX MATCH, cu o singură diferență. Ghiciți ce?

    Pur și simplu, utilizați două funcții MATCH - una pentru a obține un număr de rând și cealaltă pentru a obține un număr de coloană. Și îi felicit pe cei care au ghicit corect :)

    INDEX (array, MATCH ( valoarea vlookup , coloană pentru a privi în sus față de , 0), MATCH ( hlookup valoare , rând pentru a privi în sus împotriva , 0))

    Și acum, vă rugăm să aruncați o privire la tabelul de mai jos și să construim o formulă INDEX MATCH MATCH MATCH pentru a găsi populația (în milioane) dintr-o anumită țară pentru un anumit an.

    Cu țara-țintă în G1 (valoarea vlookup) și anul-țintă în G2 (valoarea hlookup), formula are următoarea formă:

    =INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))

    Cum funcționează această formulă

    Ori de câte ori trebuie să înțelegeți o formulă Excel complexă, descompuneți-o în părți mai mici și vedeți ce face fiecare funcție în parte:

    MATCH(G1,A2:A11,0) - caută în A2:A11 valoarea din celula G1 ("China") și returnează poziția acesteia, care este 2.

    MATCH(G2,B1:D1,0)) - caută în B1:D1 pentru a obține poziția valorii din celula G2 ("2015"), care este 3.

    Numerele de rând și de coloană de mai sus corespund argumentelor corespunzătoare ale funcției INDEX:

    INDEX(B2:D11, 2, 3)

    Ca rezultat, veți obține o valoare la intersecția dintre al doilea rând și a treia coloană din intervalul B2:D11, care este valoarea din celula D3. Ușor? Da!

    Excel INDEX MATCH pentru a căuta mai multe criterii

    Dacă ați avut ocazia să citiți tutorialul nostru Excel VLOOKUP, probabil că ați testat deja o formulă pentru Vlookup cu mai multe criterii. Cu toate acestea, o limitare semnificativă a acestei abordări este necesitatea de a adăuga o coloană de ajutor. Vestea bună este că funcția INDEX MATCH a Excel poate căuta și ea cu două sau mai multe criterii, fără a modifica sau restructura datele sursă!

    Iată formula generică INDEX MATCH cu criterii multiple:

    {=INDEX( intervalul_retur , MATCH(1, ( criterii1 = interval1 ) * ( criterii2 = gama2 ), 0))}

    Notă. Aceasta este o formulă de matrice care trebuie completată cu comanda rapidă Ctrl + Shift + Enter.

    În exemplul de tabel de mai jos, să presupunem că doriți să găsiți suma pe baza a 2 criterii, Client și Produs .

    Următoarea formulă INDEX MATCH funcționează foarte bine:

    =INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))

    Unde C2:C10 este intervalul din care se returnează o valoare, F1 este criteriul 1, A2:A10 este intervalul care trebuie comparat cu criteriul 1, F2 este criteriul 2, iar B2:B10 este intervalul care trebuie comparat cu criteriul 2.

    Nu uitați să introduceți corect formula apăsând Ctrl + Shift + Enter, iar Excel o va include automat între paranteze curbe, așa cum se arată în captura de ecran:

    Dacă preferați să nu folosiți formule de matrice în foile de calcul, adăugați încă o funcție INDEX la formulă și completați-o cu o apăsare obișnuită a tastei Enter:

    Cum funcționează aceste formule

    Formulele utilizează aceeași abordare ca și funcția de bază INDEX MATCH care analizează o singură coloană. Pentru a evalua mai multe criterii, creați două sau mai multe matrici de valori TRUE și FALSE care reprezintă potriviri și necorespunderi pentru fiecare criteriu individual, apoi multiplicați elementele corespunzătoare ale acestor matrici. Operațiunea de multiplicare convertește TRUE și FALSE în 1 și 0,Funcția MATCH cu o valoare de căutare de 1 găsește primul "1" din tablou și transmite poziția sa către INDEX, care returnează o valoare din acest rând din coloana specificată.

    Formula fără matrice se bazează pe capacitatea funcției INDEX de a gestiona matricele în mod nativ. Al doilea INDEX este configurat cu 0 număr_ rând astfel încât să transmită întreaga matrice de coloane către MATCH.

    Aceasta este o explicație la nivel înalt a logicii formulei. Pentru detalii complete, consultați Excel INDEX MATCH cu criterii multiple.

    Excel INDEX MATCH cu AVERAGE, MAX, MIN

    Microsoft Excel dispune de funcții speciale pentru a găsi o valoare minimă, maximă și medie într-un interval. Dar ce se întâmplă dacă aveți nevoie să obțineți o valoare dintr-o altă celulă care este asociată cu aceste valori? În acest caz, utilizați funcția MAX, MIN sau AVERAGE împreună cu INDEX MATCH.

    INDEX MATCH cu MAX

    Pentru a găsi cea mai mare valoare din coloana D și pentru a returna o valoare din coloana C din același rând, utilizați această formulă:

    =INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))

    INDEX MATCH cu MIN

    Pentru a localiza cea mai mică valoare din coloana D și pentru a extrage o valoare asociată din coloana C, folosiți acest lucru:

    =INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))

    INDEX MATCH cu AVERAGE

    Pentru a calcula valoarea cea mai apropiată de media din D2:D10 și pentru a obține o valoare corespunzătoare din coloana C, utilizați următoarea formulă:

    =INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))

    În funcție de modul de organizare a datelor, furnizați fie 1, fie -1 la al treilea argument (match_type) al funcției MATCH:

    • Dacă coloana de căutare (coloana D în cazul nostru) este sortată ascendent , puneți 1. Formula va calcula cea mai mare valoare care este mai puțin de sau egală cu valoarea medie.
    • În cazul în care coloana de căutare este sortată descrescător , introduceți -1. Formula va calcula cea mai mică valoare care este mai mare decât sau egală cu valoarea medie.
    • Dacă matricea de căutare conține o valoare exact egale la medie, puteți introduce 0 pentru potrivire exactă. Nu este necesară sortarea.

    În exemplul nostru, populațiile din coloana D sunt ordonate în ordine descrescătoare, astfel încât folosim -1 pentru tipul de corespondență. Ca rezultat, obținem "Tokyo", deoarece populația sa (13 189 000) este cea mai apropiată corespondență care este mai mare decât media (12 269 006).

    S-ar putea să fiți curioși să aflați că și VLOOKUP poate efectua astfel de calcule, dar ca o formulă de matrice: VLOOKUP cu AVERAGE, MAX, MIN.

    Utilizarea INDEX MATCH cu IFNA / IFERROR

    După cum probabil ați observat, dacă o formulă INDEX MATCH din Excel nu poate găsi o valoare de căutare, aceasta produce o eroare #N/A. Dacă doriți să înlocuiți notația de eroare standard cu ceva mai semnificativ, înfășurați formula INDEX MATCH în funcția IFNA. De exemplu:

    =IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Nu s-a găsit nicio potrivire")

    Și acum, dacă cineva introduce un tabel de căutare care nu există în intervalul de căutare, formula va informa în mod explicit utilizatorul că nu s-a găsit nicio potrivire:

    Dacă doriți să identificați toate erorile, nu numai #N/A, utilizați funcția IFERROR în loc de IFNA:

    =IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oops, ceva a mers prost!")

    Rețineți că, în multe situații, nu este indicat să ascundeți toate erorile, deoarece acestea vă avertizează cu privire la posibilele erori din formula dumneavoastră.

    Iată cum se utilizează INDEX și MATCH în Excel. Sper că exemplele noastre de formule se vor dovedi utile pentru dvs. și vă aștept pe blogul nostru săptămâna viitoare!

    Caietul de practică pentru descărcare

    Exemple Excel INDEX MATCH (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.