Cuprins
Tutorialul prezintă XLOOKUP - noua funcție pentru căutarea verticală și orizontală în Excel. Căutarea la stânga, ultima potrivire, Vlookup cu criterii multiple și multe alte lucruri care necesitau o diplomă în știința rachetelor pentru a fi realizate au devenit acum la fel de simple ca ABC.
Ori de câte ori aveți nevoie să căutați în Excel, ce funcție veți folosi? Este vorba de piatra de temelie VLOOKUP sau de fratele său orizontal HLOOKUP? Într-un caz mai complex, vă veți baza pe combinația canonică INDEX MATCH sau veți încredința sarcina lui Power Query? Vestea bună este că nu mai trebuie să alegeți - toate aceste metode fac loc unui succesor mai puternic și mai versatil, funcția XLOOKUP.
Cu ce este mai bun XLOOKUP? În multe feluri! Poate căuta pe verticală și pe orizontală, în stânga și în sus, poate căuta cu mai multe criterii și chiar returnează o coloană sau un rând întreg de date, nu doar o singură valoare. Microsoft a avut nevoie de peste 3 decenii, dar în cele din urmă a reușit să proiecteze o funcție robustă care depășește multe erori frustrante și puncte slabe ale VLOOKUP.
Care este capcana? Din păcate, există una. Funcția XLOOKUP este disponibilă numai în Excel pentru Microsoft 365, Excel 2021 și Excel pentru web.
Funcția Excel XLOOKUP - sintaxă și utilizări
Funcția XLOOKUP din Excel caută într-un interval sau într-o matrice o valoare specificată și returnează valoarea aferentă dintr-o altă coloană. Aceasta poate căuta atât pe verticală, cât și pe orizontală și poate efectua o potrivire exactă (implicită), aproximativă (cea mai apropiată) sau o potrivire cu wildcard (parțială).
Sintaxa funcției XLOOKUP este următoarea:
XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])Primele trei argumente sunt obligatorii, iar ultimele trei sunt opționale.
- Valoare_de_consultare - valoarea care trebuie căutată.
- Tablou_repertoriu - intervalul sau matricea în care se efectuează căutarea.
- Rețea de returnare - intervalul sau matricea din care se returnează valorile.
- If_not_found [opțional] - valoarea care trebuie returnată în cazul în care nu se găsește nicio potrivire. Dacă este omisă, se trimite o eroare #N/A.
- Modul_de_meci [opțional] - tipul de potrivire care trebuie efectuat:
- 0 sau omis (implicit) - potrivire exactă. Dacă nu se găsește, se trimite o eroare #N/A.
- -1 - potrivire exactă sau următoarea valoare mai mică. În cazul în care nu se găsește o potrivire exactă, se returnează următoarea valoare mai mică.
- 1 - potrivire exactă sau următoarea valoare mai mare. În cazul în care nu se găsește o potrivire exactă, se returnează următoarea valoare mai mare.
- 2 - potrivire cu caractere wildcard.
- Modul_de_cercetare [opțional] - direcția de căutare:
- 1 sau omis (implicit) - pentru a căuta de la primul la ultimul.
- -1 - pentru a căuta în ordine inversă, de la ultimul la primul.
- 2 - căutare binară pe date ordonate crescător.
- -2 - căutare binară pe date ordonate descrescător.
Potrivit Microsoft, căutare binară este inclusă pentru utilizatorii avansați. Este un algoritm special care găsește poziția unei valori de căutare în cadrul unui tablou sortat, comparând-o cu elementul din mijloc al tabloului. O căutare binară este mult mai rapidă decât o căutare obișnuită, dar funcționează corect numai pe date sortate.
Formula de bază XLOOKUP
Pentru a înțelege mai bine, haideți să construim o formulă Xlookup în forma sa cea mai simplă pentru a efectua o căutare exactă. Pentru aceasta, vom avea nevoie doar de primele 3 argumente.
Să presupunem că aveți un tabel de sinteză cu informații despre cele cinci oceane de pe Pământ. Doriți să obțineți suprafața unui anumit ocean introdusă în F1 ( lookup_value ). cu numele oceanelor din A2:A6 ( lookup_array ) și suprafețele din C2:C6 ( return_array ), formula este următoarea:
=XLOOKUP(F1, A2:A6, C2:C6)
Tradus în engleză simplă, spune: căutați valoarea F1 în A2:A6 și returnați o valoare din C2:C6 în același rând. Fără numere de index de coloană, fără sortare, fără alte ciudățenii ridicole ale Vlookup! Pur și simplu funcționează :)
XLOOKUP vs. VLOOKUP în Excel
În comparație cu tradiționalul VLOOKUP, XLOOKUP are multe avantaje. În ce fel este mai bun decât VLOOKUP? Iată o listă cu cele mai bune 10 caracteristici, care fac ca orice altă funcție de căutare din Excel să fie mai bună decât orice altă funcție de căutare din Excel:
- Căutare verticală și orizontală Funcția XLOOKUP și-a primit numele datorită capacității sale de a efectua căutări atât pe verticală, cât și pe orizontală.
- Priviți în orice direcție: dreapta, stânga, jos sau sus În timp ce VLOOKUP poate căuta doar în coloana din stânga și HLOOKUP în rândul de sus, XLOOKUP nu are astfel de limitări. Faimoasa căutare în stânga în Excel nu mai este o pacoste!
- Potrivire exactă în mod implicit În cele mai multe situații, veți căuta o potrivire exactă, iar XLOOKUP o returnează în mod implicit (spre deosebire de funcția VLOOKUP, care are ca valoare implicită o potrivire aproximativă). Desigur, puteți face ca XLOOKUP să efectueze și o potrivire aproximativă, dacă este necesar.
- Potrivire parțială cu wildcards Atunci când cunoașteți doar o parte din valoarea de căutare, nu toată, o potrivire cu wildcard este utilă.
- Căutare în ordine inversă Anterior, pentru a obține ultima apariție, trebuia să inversați ordinea datelor sursă. Acum, este suficient să setați modul_de_cercetare la -1 pentru a forța formula Xlookup să caute din spate și să returneze ultima potrivire.
- Returnarea mai multor valori . prin manipularea cu return_array puteți extrage un întreg rând sau o întreagă coloană de date legate de valoarea de căutare.
- Căutare cu criterii multiple . Excel XLOOKUP gestionează nativ array-uri, ceea ce face posibilă efectuarea de căutări cu criterii multiple.
- În cazul în care funcționalitatea de eroare În mod tradițional, folosim funcția IFNA pentru a prinde erorile #N/A. XLOOKUP încorporează această funcționalitate în if_not_found argument care permite generarea propriului text dacă nu se găsește nicio potrivire validă.
- Inserții/ștergeri de coloane Una dintre cele mai enervante probleme cu VLOOKUP este că adăugarea sau eliminarea de coloane întrerupe o formulă, deoarece coloana de returnare este identificată prin numărul său de index. Cu XLOOKUP, furnizați intervalul de returnare, nu numărul, ceea ce înseamnă că puteți insera și elimina câte coloane aveți nevoie fără să întrerupeți nimic.
- Performanță mai bună VLOOKUP ar putea încetini foile de lucru deoarece include întregul tabel în calcule, ceea ce duce la procesarea a mult mai multe celule decât este necesar. XLOOKUP gestionează numai array-urile de căutare și de returnare de care depinde cu adevărat.
Cum se utilizează XLOOKUP în Excel - exemple de formule
Următoarele exemple demonstrează cele mai utile caracteristici XLOOKUP în acțiune. În plus, veți descoperi câteva utilizări non-triviale care vă vor duce abilitățile de căutare în Excel la un nou nivel.
Priviți în sus pe verticală și orizontală
Microsoft Excel obișnuia să aibă două funcții pentru diferite tipuri de căutări, fiecare având propria sintaxă și propriile reguli de utilizare: VLOOKUP pentru a căuta pe verticală într-o coloană și HLOOKUP pentru a căuta pe orizontală într-un rând.
Funcția XLOOKUP le poate face pe amândouă cu aceeași sintaxă. Diferența constă în ceea ce furnizați pentru array-urile de căutare și de returnare.
Pentru v-lookup, furnizați coloane:
=XLOOKUP(E1, A2:A6, B2:B6)
Pentru h-lookup, introduceți rânduri în loc de coloane:
=XLOOKUP(I1, B1:F1, B2:F2)
Căutarea la stânga efectuată nativ
În versiunile anterioare ale Excel, formula INDEX MATCH era singura modalitate fiabilă de a căuta la stânga sau deasupra. Acum, nu mai este nevoie să combinați două funcții în cazul în care una ar fi suficientă. Trebuie doar să specificați matricea de căutare țintă, iar XLOOKUP o va gestiona fără probleme, indiferent de locația acesteia.
Ca un exemplu, să adăugăm Clasament în stânga tabelului nostru de probă. Scopul este de a obține rangul intrării oceanului în F1. VLOOKUP s-ar împiedica aici, deoarece poate returna doar o valoare dintr-o coloană aflată în dreapta coloanei de căutare. O formulă Xlookup se descurcă cu ușurință:
=XLOOKUP(F1, B2:B6, A2:A6)
În mod similar, puteți privi mai sus atunci când căutați orizontal în rânduri.
XLOOKUP cu potrivire exactă și aproximativă
Comportamentul de potrivire este controlat de cel de-al cincilea argument numit match_mode În mod implicit, se efectuează o potrivire exactă.
Vă rugăm să fiți atenți la faptul că, chiar și atunci când alegeți o potrivire aproximativă ( match_mode setat la 1 sau -1), funcția va căuta în continuare o potrivire exactă. Diferența constă în ceea ce returnează dacă nu se găsește o valoare de căutare exactă.
Argumentul Match_mode:
- 0 sau omis - potrivire exactă; dacă nu se găsește - eroare #N/A.
- -1 - potrivire exactă; dacă nu se găsește - următorul element mai mic.
- 1 - potrivire exactă; dacă nu se găsește - următorul articol mai mare.
Potrivire exactă XLOOKUP
Aceasta este opțiunea pe care probabil că o utilizați în 99% din cazurile în care efectuați căutări în Excel. Deoarece o potrivire exactă este comportamentul implicit al XLOOKUP, puteți omite opțiunea match_mode și furnizați doar primele 3 argumente necesare.
Cu toate acestea, în unele situații, o potrivire exactă nu va funcționa. Un scenariu tipic este atunci când tabelul de căutare nu conține toate valorile, ci mai degrabă "repere" sau "limite", cum ar fi reducerile bazate pe cantitate, comisioanele bazate pe vânzări etc.
Exemplul nostru de tabel de căutare arată corelația dintre notele de la examene și note. După cum puteți vedea în captura de ecran de mai jos, o potrivire exactă funcționează numai atunci când nota unui anumit student se potrivește exact cu valoarea din tabelul de căutare (ca Christian din rândul 3). În toate celelalte cazuri, se returnează o eroare #N/A.
=XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6)
Pentru a obține note în loc de erori #N/A, trebuie să căutăm o potrivire aproximativă, așa cum se arată în exemplul următor.
Potrivire aproximativă XLOOKUP
Pentru a efectua o căutare aproximativă, setați valoarea match_mode la -1 sau 1, în funcție de modul în care sunt organizate datele.
În cazul nostru, tabelul de căutare enumeră limitele inferioare ale notelor. Deci, setează match_mode la -1 pentru a căuta următoarea valoare mai mică atunci când nu se găsește o potrivire exactă:
=XLOOKUP(F11, $B$11:$B$15, $C$11:$C$15, ,-1)
De exemplu, Brian are nota 98 (F2). Formula caută această valoare de căutare în B2:B6, dar nu o găsește. Apoi, caută următorul element mai mic și găsește 90, care corespunde notei A:
Dacă tabelul nostru de căutare ar conține limitele superioare ale notelor, am seta match_mode la 1 pentru a căuta următorul element mai mare în cazul în care nu se obține o potrivire exactă:
=XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6, ,1)
Formula caută 98 și din nou nu o găsește. De data aceasta, încearcă să găsească următoarea valoare mai mare și obține 100, care corespunde notei A:
Sfat: Atunci când copiați o formulă Xlookup în mai multe celule, blocați intervalele de căutare sau de returnare cu referințe de celule absolute (cum ar fi $B$2:$B$6) pentru a preveni modificarea acestora.
XLOOKUP cu potrivire parțială (wildcards)
Pentru a efectua o căutare de potrivire parțială, setați opțiunea match_mode la 2, ceea ce instruiește funcția XLOOKUP să proceseze caracterele wildcard:
- Un asterisc (*) - reprezintă orice secvență de caractere.
- Un semn de întrebare (?) - reprezintă orice caracter unic.
Pentru a vedea cum funcționează, vă rugăm să luați în considerare următorul exemplu. În coloana A, aveți câteva modele de smartphone-uri și, în coloana B, capacitatea bateriei acestora. Sunteți curios să aflați care este bateria unui anumit smartphone. Problema este că nu sunteți sigur că puteți introduce numele modelului exact așa cum apare în coloana A. Pentru a depăși această problemă, introduceți partea care se află cu siguranță acolo și înlocuiți restulcaractere cu caractere wildcard.
De exemplu, pentru a obține informații despre bateria lui iPhone X, utilizați această formulă:
=XLOOKUP("*iphone X*", A2:A8, B2:B8, ,2)
Sau, introduceți partea cunoscută a valorii de căutare într-o celulă și concatenați referința celulei cu caracterele wildcard:
=XLOOKUP("*"&E1& "*", A2:A8, B2:B8, ,2)
XLOOKUP în ordine inversă pentru a obține ultima apariție
În cazul în care tabelul dvs. conține mai multe apariții ale valorii de căutare, este posibil ca uneori să fie necesar să returnați valoarea ultimul meci Pentru a face acest lucru, configurați formula Xlookup pentru a căuta în ordine inversă.
Direcția de căutare este controlată de cel de-al 6-lea argument numit modul_de_cercetare :
- 1 sau omis (implicit) - caută de la prima la ultima valoare, adică de sus în jos cu căutare verticală sau de la stânga la dreapta cu căutare orizontală.
- -1 - caută în ordine inversă, de la ultima la prima valoare.
Ca exemplu, să returnăm ultima vânzare efectuată de un anumit vânzător. Pentru aceasta, adunăm primele trei argumente necesare (G1 pentru lookup_value , B2:B9 pentru lookup_array , și D2:D9 pentru return_array ) și puneți -1 în al cincilea argument:
=XLOOKUP(G1, B2:B9, D2:D9, , ,-1)
Simplu și simplu, nu-i așa?
XLOOKUP pentru a returna mai multe coloane sau rânduri
O altă caracteristică uimitoare a XLOOKUP este capacitatea sa de a returna mai multe valori referitoare la aceeași potrivire. Totul se face cu sintaxa standard și fără manipulări suplimentare!
Din tabelul de mai jos, presupunând că doriți să preluați toate detaliile referitoare la vânzătorul de interes (F2). Ceea ce trebuie să faceți este să furnizați un interval, nu o singură coloană sau un singur rând, pentru return_array argument:
=XLOOKUP(F2, A2:A7, B2:D7)
Introduceți formula în celula din stânga-sus a intervalului de rezultate, iar Excel varsă automat rezultatele în celulele goale adiacente. În cazul nostru, matricea de returnare (B2:D7) include 3 coloane ( Data , Articolul și Suma ), iar toate cele trei valori sunt returnate în intervalul G2:I2.
Dacă preferați să aranjați rezultatele pe verticală într-o coloană, adăugați XLOOKUP în funcția TRANSPOSE pentru a întoarce matricea returnată:
=TRANSPUNE(XLOOKUP(G1, A2:A7, B2:D7))
În mod similar, puteți returna o întreagă coloană de date, de exemplu coloana Suma Pentru aceasta, folosiți celula F1 care conține "Amount" ca și lookup_value , intervalul A1:D1 care conține anteturile de coloană ca fiind lookup_array și intervalul A2:D7 care conține toate datele ca return_array .
=XLOOKUP(F1, A1:D1, A2:D7)
Notă. Deoarece mai multe valori sunt populate în celulele vecine, asigurați-vă că aveți suficiente celule goale la dreapta sau în jos. Dacă Excel nu găsește suficiente celule goale, apare eroarea #SPILL!
Sfat. XLOOKUP poate nu numai să returneze mai multe intrări, ci și să le înlocuiască cu alte valori pe care le specificați. Un exemplu de astfel de înlocuire în bloc poate fi găsit aici: Cum să căutați și să înlocuiți mai multe valori cu XLOOKUP.
XLOOKUP cu criterii multiple
Un alt mare avantaj al XLOOKUP este că gestionează nativ array-uri. Datorită acestei abilități, puteți evalua mai multe criterii direct în lookup_array argument:
XLOOKUP(1, ( intervalul_criteriu1 = criterii1 ) * ( criterii_gama2 = criterii2 ) * (...), return_array )Cum funcționează această formulă : Rezultatul fiecărui test de criteriu este un tablou de valori ADEVĂRAT și FALS. Înmulțirea tablourilor convertește ADEVĂRAT și FALS în 1 și, respectiv, 0, și produce tabloul final de căutare. După cum știți, înmulțirea cu 0 dă întotdeauna zero, astfel încât în tabloul de căutare, numai elementele care îndeplinesc toate criteriile sunt reprezentate de 1. Și pentru că valoarea noastră de căutare este "1", Excel ia primul "1" în lookup_array (prima potrivire) și returnează valoarea din return_array în aceeași poziție.
Pentru a vedea formula în acțiune, să extragem o sumă din D2:D10 ( return_array ) cu următoarele condiții:
- Criteria1 (data) = G1
- Criteria2 (vânzător) = G2
- Criteriul3 (item) = G3
Cu date în A2:A10 ( intervalul_criteriu1 ), numele vânzătorilor din B2:B10 ( criterii_gama2 ) și elementele din C2:C10 ( criterii_gama3 ), formula ia această formă:
=XLOOKUP(1, (B2:B10=G1) * (A2:A10=G2) * (C2:C10=G3), D2:D10)
Deși funcția Excel XLOOKUP procesează matrice, aceasta funcționează ca o formulă obișnuită și se completează cu o apăsare obișnuită a tastei Enter.
Formula XLOOKUP cu mai multe criterii nu se limitează la condițiile "egal cu". Sunteți liber să utilizați și alți operatori logici. De exemplu, pentru a filtra comenzile efectuate la data din G1 sau mai devreme, puneți "<=G1" în primul criteriu:
=XLOOKUP(1, (A2:A10<=G1) * (B2:B10=G2) * (C2:C10=G3), D2:D10)
Dublu XLOOKUP
Pentru a găsi o valoare la intersecția dintre un anumit rând și o anumită coloană, efectuați așa-numitul dublă căutare sau căutarea matricei Da, Excel XLOOKUP poate face și acest lucru! Pur și simplu, trebuie doar să înglobați o funcție în alta:
XLOOKUP( lookup_value1 , lookup_array1 , XLOOKUP( lookup_value2 , lookup_array2 , date_valori ))Cum funcționează această formulă : Formula se bazează pe capacitatea lui XLOOKUP de a returna un întreg rând sau o întreagă coloană. Funcția interioară caută valoarea de căutare și returnează o coloană sau un rând de date aferente. Această matrice merge la funcția exterioară ca fiind return_array .
Pentru acest exemplu, vom găsi vânzările realizate de un anumit vânzător într-un anumit trimestru. În acest scop, introducem valorile de căutare în H1 (numele vânzătorului) și H2 (trimestrul) și realizăm un Xlookup bidirecțional cu următoarea formulă:
=XLOOKUP(H1, A2:A6, XLOOKUP(H2, B1:E1, B2:E6))
Sau invers:
=XLOOKUP(H2, B1:E1, XLOOKUP(H1, A2:A6, B2:E6))
Unde A2:A6 sunt numele vânzătorilor, B1:E1 sunt trimestrele (antetele coloanelor), iar B2:E6 sunt valorile datelor.
O căutare bidirecțională poate fi efectuată și cu o formulă INDEX Match și în alte câteva moduri. Pentru mai multe informații, consultați Căutarea bidirecțională în Excel.
Dacă eroare XLOOKUP
Atunci când valoarea de căutare nu este găsită, Excel XLOOKUP returnează o eroare #N/A. Destul de familiar și de înțeles pentru utilizatorii experți, ar putea fi destul de confuz pentru începători. Pentru a înlocui notația de eroare standard cu un mesaj ușor de utilizat, introduceți propriul text în cel de-al 4-lea argument numit if_not_found .
Înapoi la primul exemplu discutat în acest tutorial. Dacă cineva introduce un nume de ocean invalid în E1, următoarea formulă îi va spune în mod explicit că "Nu s-a găsit nicio potrivire":
=XLOOKUP(E1, A2:A6, B2:B6, "Nu s-a găsit nicio potrivire")
Note:
- The if_not_found prinde numai erorile #N/A, nu toate erorile.
- Erorile #N/A pot fi, de asemenea, tratate cu IFNA și VLOOKUP, dar sintaxa este puțin mai complexă și o formulă este mai lungă.
XLOOKUP sensibil la majuscule și minuscule
În mod implicit, funcția XLOOKUP tratează literele minuscule și majuscule ca fiind aceleași caractere. Pentru a face distincția între majuscule și minuscule, utilizați funcția EXACT pentru lookup_array argument:
XLOOKUP(TRUE, EXACT( lookup_value , lookup_array ), return_array )Cum funcționează această formulă : Funcția EXACT compară valoarea de căutare cu fiecare valoare din tabloul de căutări și returnează TRUE dacă sunt exact la fel, inclusiv majusculele literelor, iar în caz contrar, FALSE. Acest tablou de valori logice merge la lookup_array Ca rezultat, XLOOKUP caută valoarea TRUE în matricea de mai sus și returnează o potrivire din matricea de returnare.
De exemplu, pentru a obține prețul din B2:B7 ( return_array ) pentru elementul din E1 ( valoare_de_consultare) , formula din E2 este:
=XLOOKUP(TRUE, EXACT(E1, A2:A7), B2:B7, "Not found")
Notă: Dacă există două sau mai multe valori exact identice în matricea de căutare (inclusiv majusculele), se returnează prima potrivire găsită.
Excel XLOOKUP nu funcționează
Dacă formula dvs. nu funcționează corect sau are rezultate eronate, cel mai probabil este din cauza următoarelor motive:
XLOOKUP nu este disponibil în Excel-ul meu
Funcția XLOOKUP nu este compatibilă cu versiunile anterioare. Este disponibilă numai în Excel pentru Microsoft 365 și Excel 2021 și nu va apărea în versiunile anterioare.
XLOOKUP returnează un rezultat greșit
Dacă formula Xlookup, evident corectă, returnează o valoare greșită, există șanse ca intervalul de căutare sau de returnare să se fi "deplasat" atunci când formula a fost copiată în jos sau peste. Pentru a preveni acest lucru, asigurați-vă că blocați întotdeauna ambele intervale cu referințe absolute de celule (cum ar fi $A$2:$A$10).
XLOOKUP returnează eroarea #N/A
O eroare #N/A înseamnă doar că valoarea de căutare nu a fost găsită. Pentru a remedia această problemă, încercați să căutați o potrivire aproximativă sau informați-vă utilizatorii că nu a fost găsită nicio potrivire.
XLOOKUP returnează eroarea #VALUE
O eroare #VALUE! apare dacă array-urile de căutare și de returnare au dimensiuni incompatibile. De exemplu, nu este posibilă căutarea într-un array orizontal și returnarea valorilor dintr-un array vertical.
XLOOKUP returnează eroarea #REF
O eroare #REF! este generată atunci când se face o căutare între două registre de lucru diferite, dintre care unul este închis. Pentru a remedia eroarea, deschideți pur și simplu ambele fișiere.
După cum tocmai ați văzut, XLOOKUP are multe caracteristici minunate care îl fac funcția THE pentru aproape orice căutare î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 de formule Excel XLOOKUP (fișier .xlsx)