Satura rādītājs
Šajā pamācībā ir parādīts, kā izmantot funkciju VLOOKUP, lai kopētu datus no citas darblapas vai darbgrāmatas, Vlookup vairākās lapās un dinamiski meklētu, lai atgrieztu vērtības no dažādām lapām dažādās šūnās.
Meklējot kādu informāciju programmā Excel, reti kad visi dati ir vienā lapā. Biežāk jums būs jāmeklē vairākās lapās vai pat dažādās darbgrāmatās. Labā ziņa ir tā, ka Microsoft Excel piedāvā vairāk nekā vienu veidu, kā to izdarīt, un sliktā ziņa ir tā, ka visi veidi ir nedaudz sarežģītāki par standarta VLOOKUP formulu. Bet ar nelielu pacietību, mēsizdomāsim tos :)
Kā veikt VLOOKUP starp divām lapām
Vispirms izpētīsim vienkāršāko gadījumu - izmantojot VLOOKUP, lai kopētu datus no citas darblapas. Tas ir ļoti līdzīgi parastajai VLOOKUP formulai, kas meklē datus tajā pašā darblapā. Atšķirība ir tāda, ka jūs iekļaujat lapas nosaukumu formulā. table_array argumentu, lai norādītu formulai, kurā darblapā atrodas meklēšanas diapazons.
Vispārējā formula VLOOKUP no citas lapas ir šāda:
VLOOKUP(lookup_value, Loksnes!diapazons , col_index_num, [range_lookup])Kā piemēru aplūkosim pārdošanas rādītājus no Jan ziņot Kopsavilkums šim nolūkam mēs definējam šādus argumentus:
- Lookup_values ir A slejā Kopsavilkums lapā, un mēs atsaucamies uz pirmo datu šūnu, kas ir A2.
- Table_array Lai uz to atsauktos, pirms atsauces uz diapazonu norādiet lapas nosaukumu, kam seko izsaukuma punkts: Jan!$A$2:$B$6.
Lūdzu, pievērsiet uzmanību tam, ka mēs bloķējam diapazonu ar absolūtajām šūnu atsaucēm, lai novērstu tā maiņu, kopējot formulu uz citām šūnām.
Col_index_num ir 2, jo mēs vēlamies kopēt vērtību no slejas B, kas ir tabulas masīva otrā sleja.
- Range_lookup ir iestatīts uz FALSE, lai meklētu precīzu atbilstību.
Saliekot argumentus kopā, iegūstam šādu formulu:
=VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)
Velciet formulu lejup pa kolonnu, un iegūsiet šādu rezultātu:
Līdzīgā veidā varat Vlookup datus no Feb un Mar loksnes:
=VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)
=VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)
Padomi un piezīmes:
- Ja lapas nosaukumā ir telpas vai rakstzīmes, kas nav alfabēts , tas ir jāiekļauj pēdiņās, piemēram. 'Jan Sales'!$A$2:$B$6 . Lai iegūtu vairāk informācijas, skatiet sadaļu Kā atsaukties uz citu lapu programmā Excel.
- Tā vietā, lai formulā tieši ierakstītu lapas nosaukumu, varat pārslēgties uz darba lapu un atlasīt tajā diapazonu. Excel automātiski ievietos atsauci ar pareizu sintaksi, tādējādi ietaupot jums pūles, lai pārbaudītu nosaukumu un novērstu problēmas.
Vlookup no citas darbgrāmatas
Lai veiktu VLOOKUP starp divām darbgrāmatām, kvadrātiekavās ierakstiet faila nosaukumu, pēc tam lapas nosaukumu un izsaukājzīmi.
Piemēram, lai meklētu A2 vērtību diapazonā A2:B6. Jan lapā Sales_reports.xlsx darbgrāmatā izmantojiet šo formulu:
=VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)
Sīkāku informāciju skatiet sadaļā VLOOKUP no citas darbgrāmatas programmā Excel.
Vlookup vairākās lapās ar IFERROR
Ja nepieciešams veikt meklēšanu starp vairāk nekā divām lapām, visvienkāršākais risinājums ir izmantot VLOOKUP kombinācijā ar IFERROR. Ideja ir ievietot vairākas IFERROR funkcijas, lai pārbaudītu vairākas darblapas vienu pēc otras: ja pirmā VLOOKUP neatrod atbilstību pirmajā lapā, meklēšanu veic nākamajā lapā un tā tālāk.
IFERROR(VLOOKUP(...), IFERROR(VLOOKUP(...), ..., " Nav atrasts "))Lai redzētu, kā šī pieeja darbojas ar reāliem datiem, aplūkosim šādu piemēru. Zemāk ir parādīts Kopsavilkums tabulu, kuru mēs vēlamies aizpildīt ar preču nosaukumiem un summām, meklējot pasūtījuma numuru datubāzē West un East loksnes:
Vispirms mēs izvilksim preces. Šim nolūkam mēs uzdodam VLOOKUP formulai meklēt pasūtījuma numuru A2 laukā A2. East lapā un atgriezt vērtību no B slejas (2. slejā table_array A2:C6). Ja precīza atbilstība nav atrasta, tad meklējiet West loksne. Ja abas Vlookups nav veiksmīgas, atgriezt "Nav atrasts".
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))
Lai atgrieztu summu, vienkārši mainiet kolonnas indeksa numuru uz 3:
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))
Padoms. Ja nepieciešams, dažādām VLOOKUP funkcijām varat norādīt dažādus tabulu masīvus. Šajā piemērā abās meklēšanas lapās ir vienāds rindu skaits (A2:C6), taču jūsu darblapas var būt dažāda lieluma.
Vlookup vairākās darbgrāmatās
Lai veiktu Vlookup starp divām vai vairākām darbgrāmatām, darbgrāmatas nosaukumu ielieciet kvadrātiekavās un ievietojiet to pirms lapas nosaukuma. Piemēram, šādi varat veikt Vlookup in divi dažādi faili ( Grāmata1 un Grāmata2 ) ar vienu formulu:
=IFERROR(VLOOKUP(A2, [Book1.xlsx]East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, [Book2.xlsx]West!$A$2:$C$6, 2, FALSE), "Nav atrasts"))
Padarīt kolonnas indeksa numuru dinamisku, lai Vlookup vairākas kolonnas
Ja nepieciešams atgriezt datus no vairākām kolonnām, veicot col_index_num dinamika varētu ietaupīt jūsu laiku. Ir jāveic daži pielāgojumi:
- Par col_index_num argumentu, izmantojiet funkciju COLUMNS, kas atgriež kolonnu skaitu norādītajā masīvā: COLUMNS($A$1:B$1). (Rindu koordinātēm nav nozīmes, tā var būt jebkura rinda.)
- In the lookup_value argumentu, bloķējiet kolonnas atsauci ar zīmi $ ($A2), lai tā paliktu nemainīga, kopējot formulu uz citām kolonnām.
Rezultātā tiek iegūta sava veida dinamiska formula, kas iegūst atbilstošas vērtības no dažādām kolonnām atkarībā no tā, kurā kolonnā formula ir kopēta:
=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"))
Kad ievadīts B slejā, COLUMNS($A$1:B$1) tiek novērtēts kā 2, kas norāda VLOOKUP, lai atgrieztu vērtību no tabulas masīva 2. slejas.
Kad formula tiek kopēta uz C kolonnu (t. i., jūs esat pārvilcis formulu no B2 uz C2), B$1 mainās uz C$1, jo atsauce uz kolonnu ir relatīva. Tādējādi COLUMNS($A$1:C$1) tiek novērtēta kā 3, liekot VLOOKUP atgriezt vērtību no 3. kolonnas.
Šī formula lieliski darbojas 2 - 3 meklēšanas lapām. Ja to ir vairāk, atkārtotas IFERROR kļūdas kļūst pārāk apgrūtinošas. Nākamais piemērs parāda nedaudz sarežģītāku, bet daudz elegantāku pieeju.
Vlookup vairākas lapas ar INDIRECT
Vēl viens veids, kā Excel programmā Vlookup veikt Vlookup starp vairākām lapām, ir izmantot VLOOKUP un INDIRECT funkciju kombināciju. Šai metodei ir nepieciešama neliela sagatavošanās, taču galu galā jums būs kompaktāka formula Vlookup veikšanai vairākās izklājlapās.
Vispārējā formula Vlookup starp lapām ir šāda:
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)Kur:
- Lookup_sheets - nosauktu diapazonu, kas sastāv no meklēšanas lapu nosaukumiem.
- Lookup_value - meklējamā vērtība.
- Lookup_range - kolonnu diapazonu meklēšanas tabulās, kurā meklēt meklēšanas vērtību.
- Table_array - datu diapazonu uzmeklēšanas tabulās.
- Col_index_num - tās tabulas masīva kolonnas numurs, no kuras jāatgriež vērtība.
Lai formula darbotos pareizi, ņemiet vērā šādus brīdinājumus:
- Tā ir masīva formula, kas jāaizpilda, kopā nospiežot taustiņus Ctrl + Shift + Enter.
- Visām lapām jābūt ar tāda pati kolonnu secība .
- Tā kā mēs izmantojam vienu tabulas masīvu visām meklēšanas loksnēm, norādiet lielākais diapazons ja jūsu lapās ir atšķirīgs rindu skaits.
Kā izmantot formulu Vlookup pāri loksnēm
Lai skatītu vairākas lapas vienlaicīgi, veiciet šādas darbības:
- Pierakstiet visus meklēšanas lapu nosaukumus kaut kur savā darbgrāmatā un nosauciet šo diapazonu ( Lookup_sheets mūsu gadījumā).
- meklējot A2 vērtību ( lookup_value )
- diapazonā A2:A6 ( lookup_range ) četrās darblapās ( East , Ziemeļos , South un West ) un
- iegūt atbilstošās vērtības no B slejas, kas ir 2. sleja ( col_index_num ) datu diapazonā A2:C6 ( table_array ).
Izmantojot iepriekš minētos argumentus, formula iegūst šādu formuli:
=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)
Ievērojiet, ka abus diapazonus ($A$2:$A$6 un $A$2:$C$6) bloķējam ar absolūtajām šūnu atsaucēm.
Rezultātā esam ieguvuši formulu, kas meklē pasūtījuma numuru 4 lapās un iegūst atbilstošo vienumu. Ja konkrētais pasūtījuma numurs nav atrasts, tiek parādīta kļūda #N/A, kā 14. rindā:
Lai atgrieztu summu, vienkārši aizstāt 2 ar 3 vienskaitlī col_index_num argumentu, jo summas ir tabulas masīva 3. slejā:
=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)
Ja vēlaties aizstāt standarta #N/A kļūdas pierakstu ar savu tekstu, ievietojiet formulu funkcijā 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 vairākas lapas starp darbgrāmatām
Šo vispārīgo formulu (vai jebkuru tās variāciju) var izmantot arī vairāku lapu Vlookup dažāda darba burtnīca Šim nolūkam darba burtnīcas nosaukumu saslēdziet INDIRECT iekšpusē, kā parādīts tālāk redzamajā formulā:
=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 starp lapām un atgriezt vairākas kolonnas
Ja vēlaties iegūt datus no vairākām kolonnām, varat izmantot vairāku šūnu masīva formula to var izdarīt vienā piegājienā. Lai izveidotu šādu formulu, norādiet masīva konstantu, lai col_index_num arguments.
Šajā piemērā mēs vēlamies atgriezt elementu nosaukumus (B sleja) un summas (C sleja), kas ir attiecīgi tabulas masīva 2. un 3. sleja. Tātad vajadzīgais masīvs ir {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)
Lai pareizi ievadītu formulu vairākās šūnās, ir jādara šādi:
- Pirmajā rindā atlasiet visas aizpildāmās šūnas (mūsu piemērā B2:C2).
- Ievadiet formulu un nospiediet Ctrl + Shift + Enter . Tādējādi atlasītajās šūnās tiek ievadīta viena un tā pati formula, kas katrā slejā iegūs atšķirīgu vērtību.
- Velciet formulu uz leju uz atlikušajām rindām.
Kā darbojas šī formula
Lai labāk izprastu loģiku, sadalīsim šo pamatformulu pa atsevišķām funkcijām:
=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 darbojas no iekšpuses uz āru, un šeit ir aprakstīts, kā to dara:
COUNTIF un INDIRECT
Īsumā INDIRECT veido atsauces uz visām meklēšanas lapām, bet COUNTIF saskaita meklēšanas vērtības (A2) atkārtojumus katrā lapā:
--(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)
Sīkāka informācija:
Vispirms jāsavieno diapazona nosaukums (Lookup_sheets) un diapazona atsauce ($A$2:$A$6), pareizajās vietās pievienojot apostrofus un izsaukājzīmi, lai izveidotu ārējo atsauci, un iegūtā teksta virkne jāievada funkcijai INDIRECT, lai dinamiski atsauktos uz meklēšanas lapām:
INDIRECT({"'East'!$A$2:$A$6"; "'South'!$A$2:$A$6"; "'North'!$A$2:$A$6"; "'West'!$A$2:$A$6"})
COUNTIF pārbauda katru šūnas A2:A6 diapazonā katrā meklēšanas lapā pret A2 vērtību galvenajā lapā un atgriež atbilžu skaitu katrā lapā. Mūsu datu kopā A2 kārtas numurs (101) ir atrodams galvenajā lapā. West lapa, kas ir 4. lapa nosauktajā diapazonā, tāpēc COUNTIF atgriež šo masīvu:
{0;0;0;1}
Pēc tam salīdziniet katru iepriekšminētā masīva elementu ar 0:
--({0; 0; 0; 0; 1}>0)
Tādējādi tiek iegūts TRUE (lielāks par 0) un FALSE (vienāds ar 0) vērtību masīvs, ko, izmantojot dubulto vienskaitli (--), pārvērš 1 un 0, un kā rezultātu iegūst šādu masīvu:
{0; 0; 0; 1}
Šī operācija ir papildu piesardzības pasākums, lai risinātu situāciju, kad meklēšanas lapā ir vairāki meklēšanas vērtības atkārtojumi, un tādā gadījumā COUNTIF atgrieztu skaitli, kas lielāks par 1, bet mēs vēlamies, lai galīgajā masīvā būtu tikai 1 un 0 (pēc brīža jūs sapratīsiet, kāpēc).
Pēc visām šīm transformācijām mūsu formula izskatās šādi:
VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)
INDEX un MATCH
Šajā brīdī tiek izmantota klasiskā INDEX MATCH kombinācija:
INDEX(Lookup_sheets, MATCH(1, {0;0;0;0;1}, 0))
MATCH funkcija, kas konfigurēta precīzai sakritībai (0 pēdējā argumentā), masīvā {0;0;0;0;1} meklē vērtību 1 un atgriež tās pozīciju, kas ir 4:
INDEX(Lookup_sheets, 4)
Funkcija INDEX kā rindu numura argumentu (rindas_num) izmanto skaitli, kas iegūts ar MATCH, un atgriež 4. vērtību nosauktajā diapazonā. Lookup_sheets , kas ir West .
Tādējādi formula tālāk reducējas līdz:
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP un INDIRECT
Funkcija INDIRECT apstrādā tajā esošo teksta virkni:
INDIRECT("'"& "West"&"'!$A$2:$C$6")
un pārveido to par atsauci, kas tiek nosūtīta uz table_array VLOOKUP arguments:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
Visbeidzot, šī ļoti standarta VLOOKUP formula meklē A2 vērtību A2 diapazona A2:C6 pirmajā slejā. West lapā un atgriež atbilstību no 2. slejas. Tas ir viss!
Dinamisks VLOOKUP, lai atgrieztu datus no vairākām lapām dažādās šūnās
Vispirms definēsim, ko tieši šajā kontekstā nozīmē vārds "dinamisks" un ar ko šī formula atšķirsies no iepriekšējām.
Ja jums ir lieli datu gabali vienā formātā, kas ir sadalīti vairākās izklājlapās, iespējams, vēlēsieties iegūt informāciju no dažādām lapām dažādās šūnās. Tālāk redzamajā attēlā ir ilustrēta šī koncepcija:
Atšķirībā no iepriekšējām formulām, kurās vērtība tika iegūta no konkrētas lapas, pamatojoties uz unikālu identifikatoru, šoreiz mēs vēlamies iegūt vērtības no vairākām lapām vienlaicīgi.
Šim uzdevumam ir divi dažādi risinājumi. Abos gadījumos ir jāveic neliels sagatavošanās darbs un jāizveido nosaukti diapazoni datu šūnām katrā meklēšanas lapā. Šajā piemērā mēs definējām šādus diapazonus:
- East_Sales - A2:B6 uz austrumu lapas
- North_Sales - A2:B6 ziemeļu lapā
- South_Sales - A2:B6 dienvidu lapā
- West_Sales - A2:B6 rietumu lapā
VLOOKUP un ieliktie IF
Ja ir pietiekams skaits lapu, kuras jāpārbauda, varat izmantot ieliktās IF funkcijas, lai atlasītu lapu, pamatojoties uz atslēgvārdiem iepriekš definētajās šūnās (mūsu gadījumā šūnās no B1 līdz D1).
Izmantojot A2 meklēšanas vērtību, formula ir šāda:
=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)
Tulkojumā angļu valodā IF daļa skan šādi:
Ja B1 ir East , meklēt diapazonā ar nosaukumu East_Sales ; ja B1 ir Ziemeļos , meklēt diapazonā ar nosaukumu North_Sales ; ja B1 ir South , meklēt diapazonā ar nosaukumu South_Sales ; un ja B1 ir West , meklēt diapazonā ar nosaukumu West_Sales .
Diapazons, ko atgriež IF, sniedzas līdz table_array VLOOKUP, kas iegūst atbilstošo vērtību no attiecīgās lapas 2. slejas.
Gudri izmantot jauktās atsauces uz meklēšanas vērtību ($A2 - absolūtā sleja un relatīvā rinda) un loģisko pārbaudi IF (B$1 - relatīvā sleja un absolūtā rinda) ļauj kopēt formulu citās šūnās bez jebkādām izmaiņām - Excel automātiski pielāgo atsauces, pamatojoties uz rindas un slejas relatīvo pozīciju.
Ievadām formulu B2, kopējam to pa labi un uz leju uz tik daudzām kolonnām un rindām, cik nepieciešams, un iegūstam šādu rezultātu:
NETIEŠĀ SKATĪŠANA
Strādājot ar daudzām loksnēm, vairāki iegulti līmeņi var padarīt formulu pārāk garu un grūti lasāmu. Daudz labāks veids ir izveidot formulu dinamiskais vlookup diapazons ar INDIRECT palīdzību:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
Šeit mēs apvienojam atsauci uz šūnu, kas satur nosaukuma diapazona unikālo daļu (B1), un kopīgo daļu (_Sales). Tādējādi tiek iegūta teksta virkne, piemēram, "East_Sales", ko INDIRECT pārveido par Excel saprotamo diapazona nosaukumu.
Rezultātā iegūsiet kompaktu formulu, kas lieliski darbojas uz jebkura skaita loksnēm:
Lūk, kā Excel programmā Vlookup starp loksnēm un failiem. Paldies, ka izlasījāt, un ceru, ka nākamnedēļ tiksimies mūsu blogā!
Prakses darba burtnīca lejupielādei
Vlookup vairāku lapu piemēri (.xlsx fails)