VLOOKUP na več listih v Excelu s primeri

  • Deliti To
Michael Brown

V učbeniku je prikazana uporaba funkcije VLOOKUP za kopiranje podatkov iz drugega delovnega lista ali delovnega zvezka, Vlookup v več listih in dinamično iskanje za vračanje vrednosti iz različnih listov v različne celice.

Pri iskanju nekaterih informacij v Excelu se redko zgodi, da so vsi podatki na istem listu. Pogosteje boste morali iskati na več listih ali celo v različnih delovnih zvezkih. Dobra novica je, da Microsoft Excel ponuja več načinov za to, slaba pa, da so vsi načini nekoliko bolj zapleteni kot standardna formula VLOOKUP. Toda z malo potrpežljivosti lahkojih bo ugotovil :)

    Kako VLOOKUP med dvema listoma

    Za začetek si oglejmo najpreprostejši primer - uporabo VLOOKUP za kopiranje podatkov iz drugega delovnega lista. To je zelo podobno običajni formuli VLOOKUP, ki išče v istem delovnem listu. Razlika je v tem, da ime lista vključite v formulo table_array argument, ki vaši formuli pove, v katerem delovnem listu se nahaja območje iskanja.

    Splošna formula za VLOOKUP iz drugega lista je naslednja:

    VLOOKUP(lookup_value, Razpon listov! , col_index_num, [range_lookup])

    Kot primer vzemimo podatke o prodaji iz Jan poročati Povzetek Za to opredelimo naslednje argumente:

    • Lookup_values so v stolpcu A na Povzetek in se sklicujemo na prvo podatkovno celico, ki je A2.
    • Table_array je območje A2:B6 na listu Jan. Če se želite nanj sklicevati, pred sklicem na območje navedite ime lista, ki mu sledi vzklik: Jan!$A$2:$B$6.

      Bodite pozorni, da območje zaklenemo z absolutnimi referencami na celice, da se ne bi spremenilo pri kopiranju formule v druge celice.

      Col_index_num je 2, ker želimo kopirati vrednost iz stolpca B, ki je drugi stolpec v tabeli.

    • Razpon_iskanja nastavi na FALSE, da se poišče natančno ujemanje.

    Če argumente združimo, dobimo tole formulo:

    =VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)

    Povlecite formulo navzdol po stolpcu in dobili boste ta rezultat:

    Na podoben način lahko Vlookup podatke iz Feb in . Mar listi:

    =VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)

    =VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)

    Nasveti in opombe:

    • Če ime lista vsebuje prostori ali nealfabetski znaki , mora biti v enojnih narekovajih, kot npr. 'Jan Sales'!$A$2:$B$6 Za več informacij glejte Kako se sklicujete na drug list v Excelu.
    • Namesto da bi ime lista vnesli neposredno v formulo, lahko preklopite na delovni list za iskanje in tam izberete območje. Excel bo samodejno vstavil sklic s pravilno sintakso, s čimer vam bo prihranil preverjanje imena in odpravljanje težav.

    Vlookup iz drugega delovnega zvezka

    Če želite VLOOKUP med dvema delovnima zvezkoma, vključite ime datoteke v oglatih oklepajih, ki mu sledita ime lista in vzklikalnik.

    Če želite na primer poiskati vrednost A2 v območju A2:B6 na Jan list v Prodajna_poročila.xlsx uporabite to formulo:

    =VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)

    Za vse podrobnosti glejte VLOOKUP iz druge delovne knjige v Excelu.

    Vlookup na več listih z IFERROR

    Kadar je treba iskati med več kot dvema listoma, je najlažja rešitev uporaba funkcije VLOOKUP v kombinaciji s funkcijo IFERROR. Ideja je, da se v več funkcij IFERROR ugnezdi več funkcij za preverjanje več delovnih listov enega za drugim: če prva funkcija VLOOKUP ne najde ujemanja na prvem listu, išče v naslednjem listu in tako naprej.

    IFERROR(VLOOKUP(...), IFERROR(VLOOKUP(...), ..., " Ni bilo najdeno "))

    Da bi videli, kako ta pristop deluje na resničnih podatkih, si oglejmo naslednji primer. Spodaj je Povzetek tabelo, ki jo želimo napolniti z imeni elementov in zneski, tako da poiščemo številko naročila v West in . Vzhodno listi:

    Najprej bomo izvlekli elemente. V ta namen bomo formuli VLOOKUP naročili, naj poišče številko naročila v A2 na Vzhodno in vrnite vrednost iz stolpca B (2. stolpec v table_array A2:C6). Če natančnega ujemanja ne najdete, iščite v West list. Če obe pregledovanji Vlookup nista uspešni, se vrne sporočilo "Ni najden".

    =IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))

    Če želite vrniti znesek, preprosto spremenite številko indeksa stolpca na 3:

    =IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))

    Nasvet. Po potrebi lahko za različne funkcije VLOOKUP določite različna polja tabel. V tem primeru imata oba lista za iskanje enako število vrstic (A2:C6), vendar so lahko vaši delovni listi različno veliki.

    Vlookup v več delovnih zvezkih

    Če želite Vlookup med dvema ali več delovnimi zvezki, zaprite ime delovnega zvezka v oglate oklepaje in ga postavite pred ime lista. Na primer, tako lahko Vlookup v dve različni datoteki ( Knjiga1 in . Knjiga2 ) z eno samo formulo:

    =IFERROR(VLOOKUP(A2, [Book1.xlsx]East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, [Book2.xlsx]West!$A$2:$C$6, 2, FALSE), "Ni najden"))

    Naredite številko indeksa stolpca dinamično za Vlookup več stolpcev

    Če želite vrniti podatke iz več stolpcev, lahko col_index_num Dinamika vam lahko prihrani nekaj časa. Potrebnih je nekaj prilagoditev:

    • Za col_index_num uporabite funkcijo COLUMNS, ki vrne število stolpcev v določenem polju: COLUMNS($A$1:B$1). (Koordinata vrstice ni pomembna, lahko je katerakoli vrstica.)
    • V lookup_value zaklenite sklic na stolpec z znakom $ ($A2), tako da ostane nespremenjen pri kopiranju formule v druge stolpce.

    Tako dobite nekakšno dinamično formulo, ki iz različnih stolpcev pridobi ustrezne vrednosti, odvisno od tega, v kateri stolpec 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"))

    Ko je vnesen v stolpec B, COLUMNS($A$1:B$1) ovrednoti na 2 in pove, da VLOOKUP vrne vrednost iz 2. stolpca v tabeli.

    Pri kopiranju v stolpec C (tj. formulo ste prenesli iz B2 v C2) se B$1 spremeni v C$1, ker je referenca na stolpec relativna. Posledično je vrednost COLUMNS($A$1:C$1) enaka 3, zato VLOOKUP vrne vrednost iz tretjega stolpca.

    Ta formula se odlično obnese pri 2 do 3 listih za iskanje. Če jih imate več, postanejo ponavljajoče se napake IFERROR preveč okorne. Naslednji primer prikazuje nekoliko bolj zapleten, vendar veliko bolj eleganten pristop.

    Vlookup več listov z INDIRECT

    Še en način za Vlookup med več listi v Excelu je uporaba kombinacije funkcij VLOOKUP in INDIRECT. Ta metoda zahteva nekaj priprave, vendar boste na koncu imeli bolj kompaktno formulo za Vlookup v poljubnem številu preglednic.

    Splošna formula za Vlookup med listi je naslednja:

    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)

    Kje:

    • Lookup_sheets - poimenovano območje, sestavljeno iz imen listov iskanja.
    • Lookup_value - vrednost za iskanje.
    • Lookup_range - obseg stolpcev v preglednicah iskanja, v katerih se išče vrednost iskanja.
    • Table_array - podatkovno območje v preglednicah za iskanje.
    • Col_index_num - številka stolpca v polju tabele, iz katerega se vrne vrednost.

    Za pravilno delovanje formule upoštevajte naslednja opozorila:

    • Gre za formulo polja, ki jo je treba dopolniti s pritiskom tipk Ctrl + Shift + Enter skupaj.
    • Vsi listi morajo imeti enak vrstni red stolpcev .
    • Ker uporabljamo eno tabelsko polje za vse liste za iskanje, določite največji obseg če imajo vaši listi različno število vrstic.

    Kako uporabiti formulo za Vlookup v vseh listih

    Če želite pregledati več listov hkrati, naredite naslednje korake:

    1. Nekje v delovnem zvezku zapišite vsa imena listov za iskanje in poimenujte to območje ( Lookup_sheets v našem primeru).

  • Splošno formulo prilagodite svojim podatkom. V tem primeru bomo:
    • iskanje vrednosti A2 ( lookup_value )
    • v območju A2:A6 ( lookup_range ) v štirih delovnih listih ( Vzhodno , Sever , Južni in . West ) in
    • iz stolpca B, ki je stolpec 2, potegnite ustrezne vrednosti ( col_index_num ) v podatkovnem območju A2:C6 ( table_array ).

    Z zgornjimi argumenti je formula takšna:

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

    Opazite, da sta obe območji ($A$2:$A$6 in $A$2:$C$6) zaklenjeni z absolutnimi referencami celic.

  • Vnesite formulo v najvišjo celico (B2 v tem primeru) in pritisnite kombinacijo tipk Ctrl + Shift + Enter, da jo dokončate.
  • Dvakrat kliknite ali povlecite ročaj za zapolnitev, da kopirate formulo navzdol po stolpcu.
  • Rezultat je formula, ki v 4 listih poišče številko naročila in pridobi ustrezen element. Če določena številka naročila ni najdena, se prikaže napaka #N/A, kot v vrstici 14:

    Če želite vrniti znesek, preprosto zamenjajte 2 s 3 v col_index_num kot zneski v tretjem stolpcu tabelaričnega polja:

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

    Če želite standardni zapis napake #N/A zamenjati z lastnim besedilom, formulo zapakirajte v funkcijo 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), "Ni najden")

    Vlookup več listov med delovnimi zvezki

    To splošno formulo (ali katero koli njeno različico) lahko uporabite tudi za pregledovanje več listov v drugačen delovni zvezek V ta namen združite ime delovnega zvezka znotraj INDIRECT, kot je prikazano v spodnji 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), "Ni najden")

    Vlookup med listi in vrnite več stolpcev

    Če želite pridobiti podatke iz več stolpcev, lahko formula za večcelično matriko lahko to storite v enem samem koraku. Če želite ustvariti takšno formulo, vnesite konstanto polja za col_index_num argument.

    V tem primeru želimo vrniti imena predmetov (stolpec B) in zneske (stolpec C), ki so drugi oziroma tretji stolpec v polju tabele. Potrebno polje je torej {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)

    Če želite pravilno vnesti formulo v več celic, morate storiti naslednje:

    • V prvi vrstici izberite vse celice, ki jih želite zapolniti (B2:C2 v našem primeru).
    • Vnesite formulo in pritisnite kombinacijo tipk Ctrl + Shift + Enter . Tako v izbrane celice vnesete isto formulo, ki bo v vsakem stolpcu vrnila drugačno vrednost.
    • Povlecite formulo navzdol v preostale vrstice.

    Kako deluje ta formula

    Za boljše razumevanje logike razčlenimo to osnovno formulo na posamezne 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)

    Formula deluje od znotraj navzven in vsebuje naslednje podatke:

    COUNTIF in INDIRECT

    Na kratko, INDIRECT ustvari reference za vse liste za iskanje, COUNTIF pa šteje pojavitve vrednosti iskanja (A2) v vsakem listu:

    --(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)

    Podrobneje:

    Najprej združite ime območja (Lookup_sheets) in sklic na območje ($A$2:$A$6) ter na pravih mestih dodajte apostrofe in vzklikalnik, da ustvarite zunanji sklic, in dobljeni besedilni niz podajte funkciji INDIRECT za dinamično sklicevanje na liste iskanja:

    INDIRECT({"'East'!$A$2:$A$6"; "'South'!$A$2:$A$6"; "'North'!$A$2:$A$6"; "'West'!$A$2:$A$6"})

    COUNTIF preveri vsako celico v območju A2:A6 na vsakem listu za iskanje glede na vrednost v A2 na glavnem listu in vrne število ujemanj za vsak list. V našem naboru podatkov je številka naročila v A2 (101) najdena v West list, ki je četrti v imenovanem območju, zato COUNTIF vrne to polje:

    {0;0;0;1}

    Nato vsak element zgornjega polja primerjajte z 0:

    --({0; 0; 0; 1}>0)

    Tako dobimo polje vrednosti TRUE (večje od 0) in FALSE (enake 0), ki jih z uporabo dvojnega enojnika (--) spremenimo v 1 in 0, rezultat pa je naslednje polje:

    {0; 0; 0; 1}

    Ta operacija je dodaten previdnostni ukrep za primer, ko list za iskanje vsebuje več pojavitev vrednosti iskanja in bi v tem primeru COUNTIF vrnil število, večje od 1, medtem ko želimo v končnem polju samo 1 in 0 (čez trenutek boste razumeli, zakaj).

    Po vseh teh pretvorbah je naša formula videti takole:

    VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)

    INDEX in MATCH

    Na tej točki nastopi klasična kombinacija INDEX MATCH:

    INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))

    Funkcija MATCH, konfigurirana za natančno ujemanje (0 v zadnjem argumentu), išče vrednost 1 v polju {0;0;0;0;1} in vrne njen položaj, ki je 4:

    INDEX(Lookup_sheets, 4)

    Funkcija INDEX uporabi številko, ki jo je vrnila funkcija MATCH, kot argument za številko vrstice (številka_vrstice) in vrne četrto vrednost v imenovanem območju. Lookup_sheets , ki je West .

    Formula se torej nadalje zmanjša na:

    VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)

    VLOOKUP in INDIRECT

    Funkcija INDIRECT obdela besedilni niz, ki je v njej:

    INDIRECT("'"& "West"&"'!$A$2:$C$6")

    in ga pretvori v referenco, ki se prenese na table_array argument VLOOKUP:

    VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)

    Končno ta zelo standardna formula VLOOKUP išče vrednost A2 v prvem stolpcu razpona A2:C6 na West in vrne ujemanje iz drugega stolpca. To je to!

    Dinamični VLOOKUP za vračanje podatkov iz več listov v različne celice

    Najprej opredelimo, kaj točno pomeni beseda "dinamičen" v tem kontekstu in kako se bo ta formula razlikovala od prejšnjih.

    Če imate velike dele podatkov v enaki obliki, ki so razdeljeni na več preglednic, boste morda želeli informacije iz različnih preglednic izvleči v različne celice. Spodnja slika ponazarja ta koncept:

    V nasprotju s prejšnjimi formulami, ki so na podlagi edinstvenega identifikatorja pridobile vrednost iz določenega lista, želimo tokrat pridobiti vrednosti iz več listov naenkrat.

    Za to nalogo obstajata dve različni rešitvi. V obeh primerih morate opraviti nekaj pripravljalnega dela in ustvariti poimenovana območja za podatkovne celice v vsakem listu za iskanje. V tem primeru smo določili naslednja območja:

    • East_Sales - A2:B6 na vzhodnem listu
    • North_Sales - A2:B6 na severnem listu
    • South_Sales - A2:B6 na južnem listu
    • West_Sales - A2:B6 na zahodnem listu

    VLOOKUP in vgnezdeni IF-i

    Če imate na voljo ustrezno število listov, ki jih želite poiskati, lahko uporabite vgnezdene funkcije IF za izbiro lista na podlagi ključnih besed v vnaprej določenih celicah (v našem primeru so to celice od B1 do D1).

    Z iskano vrednostjo v A2 je formula naslednja:

    =VLOOKUP($A2, IF(B$1="vzhod", East_Sales, IF(B$1="sever", North_Sales, IF(B$1="jug", South_Sales, IF(B$1="zahod", West_Sales)))), 2, FALSE)

    V angleščino preveden del IF se glasi:

    Če je B1 Vzhodno , poiščite območje z imenom East_Sales ; če je B1 Sever , poiščite območje z imenom North_Sales ; če je B1 Južni , poiščite območje z imenom South_Sales ; in če je B1 West , poiščite območje z imenom West_Sales .

    Območje, ki ga vrne IF, sega do table_array VLOOKUP, ki iz 2. stolpca ustreznega lista potegne ustrezno vrednost.

    Pametna uporaba mešanih referenc za vrednost iskanja ($A2 - absolutni stolpec in relativna vrstica) in logični preizkus IF (B$1 - relativni stolpec in absolutna vrstica) omogoča kopiranje formule v druge celice brez sprememb - Excel samodejno prilagodi reference glede na relativni položaj vrstice in stolpca.

    Tako vnesemo formulo v B2, jo kopiramo desno in navzdol v poljubno število stolpcev in vrstic ter dobimo naslednji rezultat:

    POSREDNO ISKANJE

    Pri delu z več listi bi lahko zaradi več ugnezdenih ravni formula postala predolga in težko berljiva. Veliko boljši način je, da ustvarite dinamično območje pogleda s pomočjo INDIRECT:

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

    Tu združimo sklic na celico, ki vsebuje edinstveni del poimenovanega območja (B1), in skupni del (_Sales). Tako dobimo besedilni niz, kot je "East_Sales", ki ga INDIRECT pretvori v ime območja, ki ga razume Excel.

    Tako dobite kompaktno formulo, ki se odlično obnese na poljubnem številu listov:

    To je način za Vlookup med listi in datotekami v Excelu. Zahvaljujem se vam za branje in upam, da se naslednji teden vidimo na našem blogu!

    Praktični delovni zvezek za prenos

    Primeri Vlookup več listov (.xlsx datoteka)

    Michael Brown je predan tehnološki navdušenec s strastjo do poenostavljanja kompleksnih procesov z uporabo programskih orodij. Z več kot desetletnimi izkušnjami v tehnološki industriji je svoje veščine izpopolnil v Microsoft Excelu in Outlooku ter Google Preglednicah in Dokumentih. Michaelov blog je namenjen deljenju svojega znanja in strokovnega znanja z drugimi ter ponuja preproste nasvete in vadnice za izboljšanje produktivnosti in učinkovitosti. Ne glede na to, ali ste izkušen strokovnjak ali začetnik, Michaelov blog ponuja dragocene vpoglede in praktične nasvete, kako kar najbolje izkoristiti ta osnovna programska orodja.