Sadržaj
Vodič pokazuje kako koristiti funkciju VLOOKUP za kopiranje podataka iz drugog radnog lista ili radne knjige, Vlookup u više listova i dinamičko traženje da biste vratili vrijednosti iz različitih listova u različite ćelije.
Kada tražite neke informacije u Excelu, rijedak je slučaj kada su svi podaci na istom listu. Češće ćete morati pretraživati više listova ili čak različite radne knjige. Dobra vijest je da Microsoft Excel nudi više od jednog načina za to, a loša vijest je da su svi načini malo složeniji od standardne VLOOKUP formule. Ali uz samo malo strpljenja, shvatit ćemo ih :)
Kako VLOOKUP između dva lista
Za početak, istražimo najjednostavniji slučaj - koristeći VLOOKUP za kopirajte podatke sa drugog radnog lista. Vrlo je slična običnoj formuli VLOOKUP koja pretražuje na istom radnom listu. Razlika je u tome što uključujete ime lista u argument table_array da biste svojoj formuli rekli u kojem radnom listu se nalazi raspon pretraživanja.
Generična formula za VLOOKUP sa drugog lista je sljedeća:
Kao primjer, hajde da povučemo brojke o prodaji iz Jan izvještaja u Sažetak list. Za ovo definiramo sljedeće argumente:
- Lookup_values su u stupcu A na listu Sažetak , a miVLOOKUP:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
Konačno, ova vrlo standardna formula VLOOKUP traži A2 vrijednost u prvoj koloni raspona A2:C6 na West listu i vraća utakmica iz 2. kolone. To je to!
Dynamic VLOOKUP za vraćanje podataka iz više listova u različite ćelije
Prvo, hajde da definišemo šta tačno znači reč "dinamičan" u ovom kontekstu i kako će ova formula biti drugačiji od prethodnih.
U slučaju da imate velike komade podataka u istom formatu koji su podijeljeni u više proračunskih tablica, možda ćete htjeti izdvojiti informacije iz različitih listova u različite ćelije. Slika ispod ilustrira koncept:
Za razliku od prethodnih formula koje su dohvatile vrijednost iz određenog lista na osnovu jedinstvenog identifikatora, ovog puta tražimo da izdvojimo vrijednosti iz nekoliko listova odjednom vrijeme.
Postoje dva različita rješenja za ovaj zadatak. U oba slučaja, morate obaviti mali pripremni rad i kreirati imenovane opsege za ćelije podataka u svakom listu za pretraživanje. Za ovaj primjer definirali smo sljedeće raspone:
- Istočna_prodaja - A2:B6 na istočnom listu
- Sjeverna_prodaja - A2: B6 na sjevernom listu
- Jug_Prodaja - A2:B6 na južnom listu
- Zapad_Prodaja - A2:B6 na zapadnom listu
VLOOKUP i ugniježđeni IF
Ako imate razuman broj listova za traženje, možete koristiti ugniježđene IF funkcijeda odaberete list na osnovu ključnih riječi u unaprijed definiranim ćelijama (ćelije B1 do D1 u našem slučaju).
Sa vrijednošću pretraživanja u A2, formula je sljedeća:
=VLOOKUP($A2, IF(B$1="east", East_Sales, IF(B$1="north", North_Sales, IF(B$1="south", South_Sales, IF(B$1="west", West_Sales)))), 2, FALSE)
Prevedeno na engleski, dio IF glasi:
Ako je B1 Istok , pogledajte raspon pod nazivom East_Sales ; ako je B1 Sjever , pogledajte raspon pod nazivom Sjever_Prodaja ; ako je B1 Jug , pogledajte raspon pod nazivom Jug_Prodaja ; i ako je B1 West , pogledajte raspon pod nazivom West_Sales .
Raspon koji vraća IF ide u table_array VLOOKUP-a, koji povlači odgovarajuću vrijednost iz 2. kolone na odgovarajućem listu.
Pametna upotreba mješovitih referenci za traženu vrijednost ($A2 - apsolutni stupac i relativni red) i logički test IF (B$1 - relativni stupac i apsolutni red) omogućava kopiranje formule u druge ćelije bez ikakvih promjena - Excel automatski prilagođava reference na osnovu relativnog položaja reda i stupca.
Dakle, unosimo formulu u B2, kopiramo je desno i do onoliko kolona i redova koliko je potrebno i dobijete sljedeći rezultat:
Vidi_takođe: Excel funkcija HLOOKUP s primjerima formuleINDIREKTNI VLOOKUP
Kada radite s mnogo listova, višestruki ugniježđeni nivoi također mogu napraviti formulu dugačak i težak za čitanje. Daleko bolji način je kreiranje dinamičkog raspona vlookup uz pomoć INDIRECT:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
Ovdje spajamo referencu na ćeliju koja sadržijedinstveni dio imenovanog raspona (B1) i zajednički dio (_Sales). Ovo proizvodi tekstualni niz poput "East_Sales", koji INDIREKTNO pretvara u ime raspona razumljivo Excelu.
Kao rezultat, dobijate kompaktnu formulu koja lijepo radi na bilo kojem broju listova:
Tako se vrši pretraživanje između listova i datoteka u Excelu. Zahvaljujem vam na čitanju i nadam se da se vidimo na našem blogu sljedeće sedmice!
Vježba radna sveska za preuzimanje
Vlookup više primjera listova (.xlsx datoteka)
odnosi se na prvu ćeliju podataka, koja je A2. - Table_array je raspon A2:B6 na Jan listu. Da biste ga upućivali, stavite prefiks referenci opsega sa imenom lista nakon čega slijedi uzvičnik: Jan!$A$2:$B$6.
Obratite pažnju da zaključavamo raspon apsolutnim referencama ćelija kako bismo spriječili njegovu promjenu prilikom kopiranja formule u druge ćelije.
Col_index_num je 2 jer želimo kopirati vrijednost iz stupca B, koji je 2. stupac u nizu tablice.
- Range_lookup je postavljen na FALSE kako bi se tražilo tačno podudaranje.
Stavljajući argumente zajedno, dobijamo ovu formulu:
=VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)
Povucite formulu niz kolonu i dobit ćete ovaj rezultat:
U Na sličan način možete potražiti podatke iz listova Feb i Mar :
=VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)
=VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)
Savjeti i napomene:
- Ako naziv lista sadrži razmake ili neabecednih znakova , mora se staviti u jednostruke navodnike, poput 'Jan Sales'!$A$2:$B$6 . Za više informacija pogledajte Kako referencirati drugi list u Excelu.
- Umjesto da upisujete ime lista direktno u formulu, možete se prebaciti na radni list za traženje i tamo odabrati raspon. Excel će automatski umetnuti referencu s ispravnom sintaksom, poštedjeti vas truda da provjerite ime i riješite problem.
Vlookup iz druge radne knjige
Za VLOOKUP između dvaradne knjige, uključite naziv datoteke u uglaste zagrade, a zatim naziv lista i znak uzvika.
Na primjer, da biste tražili A2 vrijednost u rasponu A2:B6 na Jan listu u u radnoj knjizi Sales_reports.xlsx , koristite ovu formulu:
=VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)
Za sve detalje pogledajte VLOOKUP iz druge radne knjige u Excelu.
Vlookup preko više listova sa IFERROR
Kada trebate tražiti između više od dva lista, najlakše rješenje je koristiti VLOOKUP u kombinaciji sa IFERROR. Ideja je da se ugnijezdi nekoliko funkcija IFERROR za provjeru više radnih listova jedan po jedan: ako prvi VLOOKUP ne pronađe podudaranje na prvom listu, pretražite sljedeći list, i tako dalje.
IFERROR(VLOOKUP(…), IFERROR(VLOOKUP(…), …, " Nije pronađeno "))Da vidimo kako ovaj pristup radi na podacima iz stvarnog života, razmotrimo sljedeći primjer. Ispod je tabela Sažetak koju želimo popuniti nazivima stavki i iznosima tražeći broj narudžbe u listovima Zapad i Istok :
Prvo ćemo povući stavke. Za ovo, mi navodimo formulu VLOOKUP da traži broj reda u A2 na listu East i vrati vrijednost iz stupca B (2. stupac u table_array A2:C6). Ako se ne pronađe tačno podudaranje, pretražite u listu Zapad . Ako oba Vlookupa ne uspiju, vratite "Nije pronađeno".
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))
Da vratite iznos,jednostavno promijenite broj indeksa stupca u 3:
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))
Savjet. Ako je potrebno, možete specificirati različite nizove tablica za različite funkcije VLOOKUP-a. U ovom primjeru, oba lista za pretraživanje imaju isti broj redova (A2:C6), ali vaši radni listovi mogu biti različite veličine.
Pregled u više radnih knjiga
Da biste pretraživali između dvije ili više radnih knjiga, stavite naziv radne knjige u uglaste zagrade i stavite ga ispred naziva lista. Na primjer, evo kako možete tražiti u dva različita fajla ( Knjiga1 i Knjiga2 ) sa jednom formulom:
=IFERROR(VLOOKUP(A2, [Book1.xlsx]East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, [Book2.xlsx]West!$A$2:$C$6, 2, FALSE),"Not found"))
Učinite broj indeksa stupca dinamičnim za Vlookup više kolona
U situaciji kada trebate vratiti podatke iz nekoliko kolona, dinamički col_index_num može vam uštedjeti vrijeme. Potrebno je napraviti nekoliko prilagodbi:
- Za argument col_index_num , koristite funkciju COLUMNS koja vraća broj stupaca u navedenom nizu: COLUMNS($A$1 :B$1). (Koordinata reda zapravo nije bitna, može biti bilo koji red.)
- U argumentu lookup_value , zaključajte referencu stupca sa znakom $ ($A2), tako da ostaje popravljeno prilikom kopiranja formule u druge stupce.
Kao rezultat, dobijate neku vrstu dinamičke formule koja izdvaja odgovarajuće vrijednosti iz različitih stupaca, ovisno o tome u koji stupac je formula kopirana:
=IFERROR(VLOOKUP($A2, East!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), IFERROR(VLOOKUP($A2, West!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), "Not found"))
Kada se unese u kolonu B, COLUMNS($A$1:B$1)procjenjuje na 2 govoreći VLOOKUP-u da vrati vrijednost iz 2. kolone u nizu tablice.
Kada se kopira u stupac C (tj. povukli ste formulu sa B2 na C2), B$1 se mijenja u C$1 jer referenca kolone je relativna. Shodno tome, COLUMNS($A$1:C$1) procjenjuje na 3 prisiljavajući VLOOKUP da vrati vrijednost iz 3. kolone.
Ova formula radi odlično za 2 - 3 lista za pretraživanje. Ako ih imate više, ponavljajuće IFERRORs postaju previše glomazne. Sljedeći primjer demonstrira malo složeniji, ali mnogo elegantniji pristup.
Pretraži više listova sa INDIRECT
Još jedan način za Vlookup između više listova u Excelu je korištenje kombinacije VLOOKUP-a i INDIREKTNE funkcije. Ova metoda zahtijeva malo pripreme, ali na kraju ćete imati kompaktniju formulu za Vlookup u bilo kojem broju proračunskih tablica.
Generička formula za Vlookup preko listova je sljedeća:
VLOOKUP( lookup_value , INDIRECT("'"&INDEX( Lookup_sheets , MATCH(1, ---(COUNTIF(INDIRECT("'" & Lookup_sheets & ") '! opseg_traživanja "), vrijednost_potraži )>0), 0)) & "'! table_array "), indeks_kolca , FALSE)Gdje:
- Lookup_sheets - imenovani raspon koji se sastoji od imena lista za pretraživanje.
- Lookup_value - vrijednost za traženje.
- Lookup_range - raspon stupaca u listama pretraživanja gdje se traži traženjevrijednost.
- Table_array - raspon podataka u listama pretraživanja.
- Col_index_num - broj stupca u nizu tablice iz kojeg se vrati vrijednost.
Da bi formula radila ispravno, imajte na umu sljedeća upozorenja:
- To je formula niza, koja se mora završiti pritiskom na Ctrl + Shift + Enter zajedno tipke.
- Svi listovi moraju imati isti redoslijed kolona .
- Pošto koristimo jedan niz tablica za sve listove pretraživanja, navedite najveći raspon ako vaši listovi imaju različit broj redova.
Kako koristiti formulu za pretragu preko listova
Da biste pretraživali više listova istovremeno, izvršite ove koraci:
- Zapišite sve nazive listova za traženje negdje u vašoj radnoj knjizi i imenujte taj raspon ( Lookup_sheets u našem slučaju).
- tražiti A2 vrijednost ( lookup_value )
- u rasponu A2:A6 ( lookup_range ) u četiri radna lista ( Istok , Sjever , Jug i Zapad ) i
- izvući odgovarajuće vrijednosti iz stupca B, koji je stupac 2 ( col_index_num ) u rasponu podataka A2:C6 ( table_array ).
Sa gornjim argumentima, formula poprima ovaj oblik:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
Imajte na umu da zaključavamo oba raspona ($A$2:$A$6 i $A$2:$C$6) apsolutnim referencama ćelije.
Kao kao rezultat, dobili smo formulu za traženje broja narudžbe u 4 lista i preuzimanje odgovarajuće stavke. Ako određeni broj naloga nije pronađen, prikazuje se greška #N/A kao u redu 14:
Da biste vratili iznos, jednostavno zamijenite 2 sa 3 u col_index_num argument jer su iznosi u 3. stupcu niza tablice:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE)
Ako želite zamijeniti standardnu notaciju greške #N/A svojim vlastitim tekstom, premotajte formulu u IFNA funkciju:
=IFNA(VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE), "Not found")
Potraži više listova između radnih knjiga
Ova generička formula (ili bilo koja njena varijacija) se također može koristiti za traženje više listova u različitoj radnoj knjizi . Za ovo, spojite ime radne knjige unutar INDIRECT kao što je prikazano u formuli ispod:
=IFNA(VLOOKUP($A2, INDIRECT("'[Book1.xlsx]" & INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'[Book1.xlsx]" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 2, FALSE), "Not found")
Pregled između listova i vraćanje više kolona
Ako želite povući podatke iz nekoliko kolone, formula niza s više ćelija to može učiniti u jednom potezu. Da biste kreirali takvu formulu, navedite konstantu niza za argument col_index_num .
U ovom primjeru želimo vratiti nazive stavki (kolona B) i iznose (kolona C), koji su 2. i 3. kolona u nizu tabele, respektivno. Dakle, traženi niz je{2,3}.
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets &"'!$A$2:$C$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), {2,3}, FALSE)
Da biste pravilno unijeli formulu u više ćelija, ovo trebate učiniti:
- U prvom redu, odaberite sve ćelije koje će se popuniti (B2:C2 u našem primjeru).
- Upišite formulu i pritisnite Ctrl + Shift + Enter . Ovo unosi istu formulu u odabrane ćelije, koje će vratiti različite vrijednosti u svakoj koloni.
- Povucite formulu na preostale redove.
Kako ova formula funkcionira
Da bismo bolje razumjeli logiku, razložimo ovu osnovnu formulu na pojedinačne funkcije:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
Radeći iznutra prema van, evo šta radi formula:
COUNTIF i INDIRECT
Ukratko, INDIRECT gradi reference za sve listove pretraživanja, a COUNTIF broji pojavljivanja pretraživanja vrijednost (A2) u svakom listu:
--(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)
Detaljnije:
Prvo, spajate naziv raspona (Lookup_sheets) i referencu raspona ($A$2: $A$6), dodajući apostrofe i uskličnik na prava mjesta da napravite vanjsku referencu i ubacite rezultirajući tekstualni niz funkciji INDIRECT da se dinamički odnosi na listove za pretraživanje:
INDIRECT({"'East'!$A$2:$A$6"; "'South'!$A$2:$A$6"; "'North'!$A$2:$A$6"; "'West'!$A$2:$A$6"})
COUNTIF provjerava svaku ćeliju u rasponu A2:A6 na svakom listu za pretraživanje u odnosu na vrijednost u A2 na glavnom list i vraća broj podudaranja za svaki list. U našem skupu podataka, broj narudžbe u A2 (101) nalazi se u listu Zapad , koji je 4. uimenovani raspon, tako da COUNTIF vraća ovaj niz:
{0;0;0;1}
Dalje, upoređujete svaki element gornjeg niza sa 0:
--({0; 0; 0; 1}>0)
Ovo daje niz TRUE (veće od 0) i FALSE (jednako 0) vrijednosti, koje primoravate na 1 i 0 koristeći dvostruku unarnu (--), i kao rezultat dobijete sljedeći niz:
{0; 0; 0; 1}
Ova operacija je dodatna mjera opreza za rješavanje situacije kada lista za pretraživanje sadrži nekoliko pojavljivanja vrijednosti pretraživanja, u kom slučaju bi COUNTIF vratio broj veći od 1, dok želimo samo 1 i 0 u konačni niz (za trenutak ćete shvatiti zašto).
Nakon svih ovih transformacija, naša formula izgleda ovako:
VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)
INDEX i MATCH
U ovom trenutku, klasična kombinacija INDEX MATCH stupa u korak:
INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))
Funkcija MATCH konfigurirana za točno podudaranje (0 u posljednjem argumentu) traži vrijednost 1 u nizu { 0;0;0;1} i vraća njegovu poziciju, a to je 4:
INDEX(Lookup_sheets, 4)
Funkcija INDEX koristi vraćeni broj pomoću MATCH kao argument broja reda (broj_reda) i vraća 4. vrijednost u imenovanom rasponu Lookup_sheets , što je Zapad .
Dakle, formula dalje smanjuje na:
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP i INDIRECT
Funkcija INDIRECT obrađuje tekstualni niz unutar njega:
INDIRECT("'"&"West"&"'!$A$2:$C$6")
i pretvara ga u referencu koja ide do table_array argumenta