Sadržaj
Udžbenik pokazuje kako koristiti funkciju VLOOKUP za kopiranje podataka s drugog radnog lista ili radne knjige, Vlookup u više listova i dinamičko traženje prema gore za vraćanje vrijednosti s različitih listova u različite ćelije.
Kada tražite neke informacije u Excelu, rijedak je slučaj da su svi podaci na istom listu. Češće ćete morati pretraživati više listova ili čak različitih radnih knjiga. 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 kompliciraniji 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 - korištenje VLOOKUP-a za kopirati podatke s drugog radnog lista. Vrlo je slična običnoj VLOOKUP formuli koja pretražuje na istom radnom listu. Razlika je u tome što uključujete naziv lista u argument table_array kako biste svojoj formuli rekli na kojem se radnom listu nalazi raspon traženja.
Generička formula za VLOOKUP s drugog lista je sljedeća:
VLOOKUP(lookup_value, Sheet!range, col_index_num, [range_lookup])Kao primjer, povucimo podatke o prodaji iz siječnja izvješća u Sažetak list. Za ovo definiramo sljedeće argumente:
- Lookup_values nalaze se u stupcu A na listu Sažetak i miVLOOKUP:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
Konačno, ova vrlo standardna VLOOKUP formula traži vrijednost A2 u prvom stupcu raspona A2:C6 na listu Zapad i vraća podudaranje iz 2. stupca. To je to!
Dinamički VLOOKUP za vraćanje podataka s više listova u različite ćelije
Prvo, definirajmo što točno znači riječ "dinamički" u ovom kontekstu i kako će ova formula biti drugačiji od prethodnih.
U slučaju da imate velike dijelove podataka u istom formatu koji su podijeljeni na više proračunskih tablica, možda ćete htjeti izvući informacije iz različitih listova u različite ćelije. Slika u nastavku ilustrira koncept:
Za razliku od prethodnih formula koje su dohvaćale vrijednost s određenog lista na temelju jedinstvenog identifikatora, ovaj put želimo izvući vrijednosti iz nekoliko listova odjednom vrijeme.
Postoje dva različita rješenja za ovaj zadatak. U oba slučaja, morate napraviti malo pripremnog rada i stvoriti imenovane raspone za podatkovne ćelije u svakom listu za pretraživanje. Za ovaj primjer definirali smo sljedeće raspone:
- East_Sales - A2:B6 na istočnom listu
- North_Sales - A2: B6 na sjevernom listu
- South_Sales - A2:B6 na južnom listu
- West_Sales - A2:B6 na zapadnom listu
VLOOKUP i ugniježđene IF-ovi
Ako imate razuman broj listova za traženje, možete koristiti ugniježđene IF funkcijeza odabir lista na temelju ključnih riječi u unaprijed definiranim ćelijama (ćelije B1 do D1 u našem slučaju).
S 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, IF dio glasi:
Ako je B1 Istok , potražite u rasponu pod nazivom East_Sales ; ako je B1 Sjever , potražite u rasponu pod nazivom Sjever_Prodaja ; ako je B1 Jug , potražite u rasponu pod nazivom Jug_Prodaja ; a ako je B1 Zapad , pogledajte raspon pod nazivom Zapad_Prodaja .
Raspon koji vraća IF ide u table_array VLOOKUP-a, koji povlači odgovarajuću vrijednost iz 2. stupca na odgovarajućem listu.
Pametna upotreba mješovitih referenci za traženu vrijednost ($A2 - apsolutni stupac i relativni redak) i logički test IF (B$1 - relativni stupac i apsolutni redak) omogućuje kopiranje formule u druge ćelije bez ikakvih promjena - Excel automatski prilagođava reference na temelju relativnog položaja retka i stupca.
Dakle, unosimo formulu u B2, kopiramo je desno i smanjite na onoliko stupaca i redaka koliko je potrebno i dobijete sljedeći rezultat:
INDIREKTNI VLOOKUP
Kada radite s mnogo listova, višestruke ugniježđene razine mogu također činiti formulu dugačak i težak za čitanje. Daleko bolji način je stvoriti dinamički vlookup raspon uz pomoć INDIRECT:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
Ovdje spajamo referencu na ćeliju koja sadržijedinstveni dio imenovanog asortimana (B1) i zajednički dio (_Prodaja). Ovo proizvodi tekstualni niz poput "East_Sales", koji se INDIREKTNO pretvara u naziv raspona koji Excel može razumjeti.
Kao rezultat, dobivate kompaktnu formulu koja lijepo funkcionira na bilo kojem broju listova:
Evo kako Vlookup između listova i datoteka u Excelu. Zahvaljujem vam na čitanju i nadam se da se vidimo na našem blogu sljedeći tjedan!
Radna bilježnica za vježbu za preuzimanje
Vlookup primjeri više listova (.xlsx datoteka)
odnosi se na prvu podatkovnu ćeliju, koja je A2. - Table_array je raspon A2:B6 na listu Jan. Da biste se pozvali na njega, stavite ispred reference raspona naziv lista nakon kojeg slijedi uskličnik: Jan!$A$2:$B$6.
Obratite pažnju da zaključavamo raspon s apsolutnim referencama ćelije 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 za traženje točnog podudaranja.
Spajajući argumente zajedno, dobivamo ovu formulu:
=VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)
Povucite formulu niz stupac i dobit ćete ovaj rezultat:
U na sličan način možete Vlookupirati podatke iz listova veljača i ožujak :
=VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)
=VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)
Savjeti i bilješke:
- Ako naziv lista sadrži razmake ili neabecedne znakove , mora biti u jednostrukim navodnicima, kao što je 'Jan Sales'!$A$2:$B$6 . Za više informacija pogledajte Kako referencirati drugi list u Excelu.
- Umjesto da upisujete naziv lista izravno u formulu, možete se prebaciti na radni list za pretraživanje i tamo odabrati raspon. Excel će automatski umetnuti referencu s ispravnom sintaksom, poštedjevši vas problema s provjerom naziva i rješavanjem problema.
VLOOKUP iz druge radne knjige
VLOOKUP između dvijeradne knjige, uključite naziv datoteke u uglate zagrade, nakon čega slijedi naziv lista i uskličnik.
Na primjer, za traženje A2 vrijednosti u rasponu A2:B6 na siječnja listu u Sales_reports.xlsx radna knjiga, upotrijebite ovu formulu:
=VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)
Za sve detalje pogledajte VLOOKUP iz druge radne knjige u programu Excel.
Vlookup preko više listova s IFERROR
Kada trebate tražiti između više od dva lista, najjednostavnije rješenje je koristiti VLOOKUP u kombinaciji s IFERROR. Ideja je ugniježditi nekoliko funkcija IFERROR za provjeru više radnih listova jedan po jedan: ako prvi VLOOKUP ne pronađe podudaranje na prvom listu, pretražite na sljedećem listu i tako dalje.
IFERROR(VLOOKUP(…), IFERROR(VLOOKUP(…), …, " Nije pronađeno "))Da bismo vidjeli kako ovaj pristup funkcionira na podacima iz stvarnog života, razmotrimo sljedeći primjer. Ispod je tablica Sažetak koju želimo popuniti nazivima stavki i iznosima traženjem broja narudžbe na listovima Zapad i Istok :
Prvo ćemo izvući predmete. U tu svrhu nalažemo formuli VLOOKUP da traži broj naloga u A2 na listu East i vrati vrijednost iz stupca B (2. stupac u table_array A2:C6). Ako nije pronađeno točno podudaranje, tražite na listu Zapad . Ako oba Vlookupa ne uspiju, vratite "Not found".
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))
Da biste vratili 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 navesti različite nizove tablica za različite VLOOKUP funkcije. U ovom primjeru oba lista za pretraživanje imaju isti broj redaka (A2:C6), ali vaši radni listovi mogu biti različite veličine.
Vlookup u više radnih knjiga
Za Vlookup između dvije ili više radnih knjiga, stavite naziv radne knjige u uglate zagrade i stavite ga ispred naziva lista. Na primjer, evo kako možete Vlookupirati u dvije različite datoteke ( Book1 i Book2 ) s 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 stupaca
U situaciji kada trebate vratiti podatke iz nekoliko stupaca, dinamičko col_index_num može vam uštedjeti vrijeme. Potrebno je izvršiti nekoliko prilagodbi:
- Za argument col_index_num koristite funkciju COLUMNS koja vraća broj stupaca u navedenom nizu: COLUMNS($A$1 :B$1). (Koordinata retka zapravo nije bitna, može biti bilo koji redak.)
- U argumentu lookup_value zaključajte referencu stupca znakom $ ($A2), tako da ostaje popravljeno prilikom kopiranja formule u druge stupce.
Kao rezultat dobivate neku vrstu dinamičke formule koja izvlači podudarne vrijednosti iz različitih stupaca, ovisno o stupcu u koji 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 stupac B, COLUMNS($A$1:B$1)daje vrijednost 2 govoreći VLOOKUP-u da vrati vrijednost iz 2. stupca u polju tablice.
Kada se kopira u stupac C (tj. povukli ste formulu iz B2 u C2), B$1 se mijenja u C$1 jer referenca stupca je relativna. Posljedično, COLUMNS($A$1:C$1) daje vrijednost 3 prisiljavajući VLOOKUP da vrati vrijednost iz 3. stupca.
Ova formula odlično funkcionira za 2 - 3 lista za pretraživanje. Ako imate više, ponavljajuće IFERROR-ove postaju preglomazne. Sljedeći primjer pokazuje malo kompliciraniji, ali puno elegantniji pristup.
Vlookup više listova s INDIRECT
Još jedan način Vlookupa između više listova u Excelu je upotreba kombinacije VLOOKUP 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 & ") '! lookup_range "), lookup_value )>0), 0)) & "'! table_array "), col_index_num , 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 listovima za pretraživanje.
- Col_index_num - broj stupca u polju tablice iz kojeg se vrati vrijednost.
Da bi formula radila ispravno, imajte na umu sljedeća upozorenja:
- To je formula niza, koja se mora dovršiti pritiskom na Ctrl + Tipke Shift + Enter zajedno.
- Svi listovi moraju imati isti redoslijed stupaca .
- Budući da koristimo jedno polje tablice za sve listove pretraživanja, odredite najveći raspon ako vaši listovi imaju različit broj redaka.
Kako koristiti formulu za Vpregled preko listova
Za Vpregled više listova odjednom, izvršite ove koraci:
- Zapišite sve nazive lista za traženje negdje u svojoj radnoj bilježnici i nazovite taj raspon ( listovi za traženje u našem slučaju).
- tražiti vrijednost A2 ( lookup_value )
- u rasponu A2:A6 ( lookup_range ) u četiri radna lista ( Istok , Sjever , Jug i Zapad ), i
- izvucite odgovarajuće vrijednosti iz stupca B, što je stupac 2 ( col_index_num ) u rasponu podataka A2:C6 ( table_array ).
S gornjim argumentima, formula ima 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) s apsolutnim referencama ćelija.
Kao što rezultat, imamo formulu za traženje broja narudžbe u 4 lista i dohvaćanje odgovarajuće stavke. Ako određeni broj narudžbe nije pronađen, prikazuje se pogreška #N/A kao u retku 14:
Da biste vratili iznos, jednostavno zamijenite 2 s 3 u col_index_num argument jer su iznosi u 3. stupcu polja 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 oznaku pogreške #N/A svojim tekstom, prelomite formulu u funkciju IFNA:
=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")
Vlookup više listova između radnih knjiga
Ova generička formula (ili njezina bilo koja varijacija) također se može koristiti za Vlookup više listova u drugoj radnoj knjizi . Za ovo spojite naziv radne knjige unutar INDIRECT kao što je prikazano u donjoj formuli:
=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")
Vlookup između listova i vrati više stupaca
Ako želite povući podatke iz nekoliko stupaca, formula niza s više ćelija to može učiniti u jednom potezu. Da biste stvorili takvu formulu, navedite konstantu polja za argument col_index_num .
U ovom primjeru želimo vratiti nazive stavki (stupac B) i iznose (stupac C), koji su 2. odnosno 3. stupac u nizu tablice. 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 ispravno unijeli formulu u više ćelija, trebate učiniti ovo:
- U prvom redu, odaberite sve ćelije koje treba popuniti (B2:C2 u našem primjeru).
- Upišite formulu i pritisnite Ctrl + Shift + Enter . Ovo unosi istu formulu u odabrane ćelije, koja će vratiti različitu vrijednost u svakom stupcu.
- Povucite formulu prema dolje u preostale retke.
Kako ova formula funkcionira
Da bismo bolje razumjeli logiku, raščlanimo 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 što formula radi:
COUNTIF i INDIRECT
Ukratko, INDIRECT gradi reference za sve tablice pretraživanja, a COUNTIF broji pojavljivanja pretraživanja vrijednost (A2) na 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), dodavanjem apostrofa i uskličnika na pravim mjestima kako bi se napravila vanjska referenca i dopremanje dobivenog tekstualnog niza u funkciju INDIRECT za dinamičko upućivanje na listove pretraživanja:
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 naloga u A2 (101) nalazi se na listu West , koji je 4. uimenovani raspon, tako da COUNTIF vraća ovaj niz:
{0;0;0;1}
Dalje, uspoređujete svaki element gornjeg niza s 0:
--({0; 0; 0; 1}>0)
To daje niz TRUE (veće od 0) i FALSE (jednako 0) vrijednosti, koje prisiljavate na 1 i 0 pomoću dvostrukog unarnog (--), i dobivate sljedeći niz kao rezultat:
{0; 0; 0; 1}
Ova operacija je dodatna mjera opreza za rješavanje situacije kada list za pretraživanje sadrži nekoliko pojavljivanja vrijednosti za pretraživanje, u kojem slučaju bi COUNTIF vratio broj veći od 1, dok želimo samo 1 i 0 u konačni niz (uskoro ć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 ovoj točki nastupa klasična kombinacija INDEX MATCH:
INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))
Funkcija MATCH konfigurirana za točno podudaranje (0 u zadnjem argumentu) traži vrijednost 1 u nizu { 0;0;0;1} i vraća njegovu poziciju, koja je 4:
INDEX(Lookup_sheets, 4)
Funkcija INDEX koristi vraćeni broj pomoću MATCH kao argument broja retka (row_num) i vraća 4. vrijednost u imenovanom rasponu Lookup_sheets , što je West .
Dakle, formula dodatno smanjuje do:
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP i INDIRECT
Funkcija INDIRECT obrađuje tekstualni niz unutar sebe:
INDIRECT("'"&"West"&"'!$A$2:$C$6")
I pretvara ga u referencu koja ide na argument table_array od