Tabela e përmbajtjes
Udhëzuesi tregon se si të përdorni funksionin VLOOKUP për të kopjuar të dhëna nga një fletë pune ose libër tjetër pune, Vlookup në fletë të shumta dhe për të kërkuar në mënyrë dinamike për të kthyer vlerat nga fletë të ndryshme në qeliza të ndryshme.
Kur kërkoni disa informacione në Excel, është një rast i rrallë kur të gjitha të dhënat janë në të njëjtën fletë. Më shpesh, do t'ju duhet të kërkoni nëpër fletë të shumta apo edhe libra të ndryshëm pune. Lajmi i mirë është se Microsoft Excel ofron më shumë se një mënyrë për ta bërë këtë, dhe lajmi i keq është se të gjitha mënyrat janë pak më të komplikuara se një formulë standarde VLOOKUP. Por me vetëm pak durim, ne do t'i kuptojmë :)
Si të VLOOKUP midis dy fletëve
Për fillestarët, le të hetojmë një rast më të thjeshtë - duke përdorur VLOOKUP për të kopjoni të dhënat nga një fletë tjetër pune. Është shumë e ngjashme me një formulë të rregullt VLOOKUP që kërkon në të njëjtën fletë pune. Dallimi është se ju përfshini emrin e fletës në argumentin table_array për të treguar formulën tuaj në cilën fletë pune ndodhet diapazoni i kërkimit.
Formula e përgjithshme për VLOOKUP nga një fletë tjetër është si më poshtë:
VLOOKUP(vlera_lookup, Fleta!range, col_index_num, [range_lookup])Si shembull, le të tërheqim shifrat e shitjeve nga raporti Jan në Përmbledhje fletë. Për këtë, ne përcaktojmë argumentet e mëposhtme:
- Vlerat_kërkuese janë në kolonën A në fletën Përmbledhje , dhe neVLOOKUP:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
Më në fund, kjo formulë shumë standarde VLOOKUP kërkon vlerën A2 në kolonën e parë të diapazonit A2:C6 në fletën West dhe kthen një ndeshje nga kolona e 2-të. Kjo është e gjitha!
VLOOKUP dinamik për të kthyer të dhënat nga fletë të shumta në qeliza të ndryshme
Së pari, le të përcaktojmë se çfarë do të thotë saktësisht fjala "dinamik" në këtë kontekst dhe si do të jetë kjo formulë të ndryshme nga ato të mëparshmet.
Në rast se keni pjesë të mëdha të dhënash në të njëjtin format që ndahen në shumë fletëllogaritëse, mund të dëshironi të nxirrni informacion nga fletë të ndryshme në qeliza të ndryshme. Imazhi më poshtë ilustron konceptin:
Ndryshe nga formulat e mëparshme që morën një vlerë nga një fletë specifike bazuar në një identifikues unik, këtë herë ne po kërkojmë të nxjerrim vlera nga disa fletë në një koha.
Ka dy zgjidhje të ndryshme për këtë detyrë. Në të dyja rastet, duhet të bëni pak punë përgatitore dhe të krijoni vargje të emërtuara për qelizat e të dhënave në secilën fletë kërkimi. Për këtë shembull, ne përcaktuam diapazonin e mëposhtëm:
- East_Sales - A2:B6 në fletën Lindore
- North_Sales - A2: B6 në fletën veriore
- South_Sales - A2:B6 në fletën jugore
- West_Sales - A2:B6 në fletën perëndimore
VLOOKUP dhe IF-të e mbivendosur
Nëse keni një numër të arsyeshëm fletësh për të kërkuar, mund të përdorni funksionet e ndërlidhura IFpër të zgjedhur fletën bazuar në fjalët kyçe në qelizat e paracaktuara (qelizat B1 deri në D1 në rastin tonë).
Me vlerën e kërkimit në A2, formula është si vijon:
=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)
E përkthyer në anglisht, pjesa IF thotë:
Nëse B1 është East , shikoni në diapazonin e quajtur East_Sales ; nëse B1 është North , shikoni në rangun e quajtur North_Sales ; nëse B1 është South , shikoni në rangun e quajtur South_Sales ; dhe nëse B1 është Perëndim , shikoni në diapazonin e quajtur West_Sales .
Sfera e kthyer nga IF shkon te array_tabelë e VLOOKUP, e cila tërheq një vlerë që përputhet nga kolona e dytë në fletën përkatëse.
Përdorimi i zgjuar i referencave të përziera për vlerën e kërkimit ($A2 - kolona absolute dhe rreshti relativ) dhe testi logjik i IF (B$1 - kolona relative dhe rreshti absolut) lejon kopjimin e formulës në qeliza të tjera pa asnjë ndryshim - Excel rregullon referencat automatikisht bazuar në pozicionin relativ të një rreshti dhe kolone.
Pra, ne e fusim formulën në B2, e kopjojmë djathtas dhe deri në aq kolona dhe rreshta sa të nevojiten, dhe merrni rezultatin e mëposhtëm:
VLERËZIMI I INDIRECT
Kur punoni me shumë fletë, nivele të shumëfishta të mbivendosur mund të bëjnë gjithashtu formulën e gjatë dhe e vështirë për t'u lexuar. Një mënyrë shumë më e mirë është krijimi i një varg vlookup dinamik me ndihmën e INDIRECT:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
Këtu, ne e lidhim referencën me qelizën që përmban njëpjesa unike e gamës së emërtuar (B1) dhe pjesa e përbashkët (_Sales). Kjo prodhon një varg teksti si "East_Sales", të cilin INDIRECT e konverton në emrin e diapazonit të kuptueshëm nga Excel.
Si rezultat, ju merrni një formulë kompakte që funksionon bukur në çdo numër fletësh:
Kështu bëhet Vlookup midis fletëve dhe skedarëve në Excel. Ju falënderoj që lexoni dhe shpresoj t'ju shohim në blogun tonë javën e ardhshme!
Praktikoni librin e punës për shkarkim
Shembuj të disa fletëve të Vlookup (skedari .xlsx)
referojuni qelizës së parë të të dhënave, e cila është A2. - Tabela_array është diapazoni A2:B6 në fletën Jan. Për t'iu referuar asaj, vendosni parashtesën referencën e diapazonit me emrin e fletës, e ndjekur nga pikëçuditja: Jan!$A$2:$B$6.
Ju lutemi, kushtoni vëmendje që ne e mbyllim diapazonin me referenca absolute të qelizave për të parandaluar ndryshimin e tij kur kopjoni formulën në qeliza të tjera.
Numri_indeksi_2> është 2 sepse duam të kopjojmë një vlerë nga kolona B, e cila është kolona e dytë në grupin e tabelës.
- Range_lookup është vendosur në FALSE për të kërkuar një përputhje të saktë.
Duke i bashkuar argumentet, marrim këtë formulë:
=VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)
Zvarriteni formulën poshtë kolonës dhe do të merrni këtë rezultat:
Në një në mënyrë të ngjashme, ju mund të kërkoni të dhëna nga fletët shkurt dhe mar :
=VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)
=VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)
Këshilla dhe shënime:
- Nëse emri i fletës përmban hapësira ose karaktere jo alfabetike , ai duhet të mbyllet në thonjëza të vetme, si 'Shitjet në Janar'!$A$2:$B$6 . Për më shumë informacion, ju lutemi shihni Si të referoni një fletë tjetër në Excel.
- Në vend që të shkruani një emër flete direkt në një formulë, mund të kaloni në fletën e punës së kërkimit dhe të zgjidhni gamën atje. Excel do të fusë automatikisht një referencë me sintaksën e duhur, duke ju kursyer vështirësinë për të kontrolluar emrin dhe zgjidhjen e problemeve.
Vlookup nga një libër tjetër pune
Tek VLOOKUP midis dylibrat e punës, përfshini emrin e skedarit në kllapa katrore, të ndjekur nga emri i fletës dhe pikëçuditja.
Për shembull, për të kërkuar vlerën A2 në rangun A2:B6 në fletën Jan në libri i punës Sales_reports.xlsx , përdorni këtë formulë:
=VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)
Për detaje të plota, ju lutemi shikoni VLOOKUP nga një libër tjetër pune në Excel.
Vlookup në të gjithë fletë të shumta me IFERROR
Kur duhet të kërkoni midis më shumë se dy fletëve, zgjidhja më e lehtë është përdorimi i VLOOKUP në kombinim me IFERROR. Ideja është që të futen disa funksione IFERROR për të kontrolluar disa fletë pune një nga një: nëse VLOOKUP-i i parë nuk gjen një përputhje në fletën e parë, kërkoni në fletën tjetër dhe kështu me radhë.
IFERROR(VLOOKUP(…), IFERROR(VLOOKUP(…), …, " Nuk u gjet "))Për të parë se si funksionon kjo qasje në të dhënat e jetës reale, le të shqyrtojmë shembullin e mëposhtëm. Më poshtë është tabela Përmbledhje që duam të plotësojmë me emrat e artikujve dhe shumat duke kërkuar numrin e porosisë në fletët West dhe East :
Së pari, ne do të tërheqim artikujt. Për këtë, ne udhëzojmë formulën VLOOKUP të kërkojë numrin e porosisë në A2 në fletën East dhe të kthejë vlerën nga kolona B (kolona e dytë në array_tabela A2:C6). Nëse nuk gjendet një përputhje e saktë, atëherë kërkoni në fletën West . Nëse të dy Vlookup-et dështojnë, ktheni "Nuk u gjet".
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))
Për të kthyer shumën,thjesht ndryshoni numrin e indeksit të kolonës në 3:
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))
Këshillë. Nëse është e nevojshme, mund të specifikoni vargje të ndryshme tabelash për funksione të ndryshme VLOOKUP. Në këtë shembull, të dy fletët e kërkimit kanë të njëjtin numër rreshtash (A2:C6), por fletët tuaja të punës mund të jenë të ndryshme në madhësi.
Vlookup në shumë libra pune
Për të Vlookup midis dy ose më shumë librave të punës, vendosni emrin e librit të punës në kllapa katrore dhe vendoseni përpara emrit të fletës. Për shembull, ja se si mund të Vlookuponi në dy skedarë të ndryshëm ( Libri1 dhe Libri2 ) me një formulë të vetme:
=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"))
Bëni numrin e indeksit të kolonës dinamik në kolona të shumta Vlookup
Në situatën kur ju duhet të ktheni të dhëna nga disa kolona, bërja e col_index_num dinamike mund t'ju kursejë pak kohë. Duhet të bëhen disa rregullime:
- Për argumentin col_index_num , përdorni funksionin COLUMNS që kthen numrin e kolonave në një grup të caktuar: COLUMNS($A$1 :B$1). (Koordinata e rreshtit nuk ka shumë rëndësi, mund të jetë çdo rresht.)
- Në argumentin lookup_value , kyçni referencën e kolonës me shenjën $ ($A2), kështu që ajo mbetet fikse kur kopjoni formulën në kolona të tjera.
Si rezultat, ju merrni një lloj formule dinamike që nxjerr vlerat që përputhen nga kolona të ndryshme, në varësi të asaj kolone në cilën kolonë formula kopjohet:
=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"))
Kur futet në kolonën B, KOLLONAT ($A$1:B$1)vlerësohet në 2 duke i thënë VLOOKUP-it të kthejë një vlerë nga kolona e dytë në grupin e tabelës.
Kur kopjohet në kolonën C (d.m.th. e keni tërhequr formulën nga B2 në C2), B$1 ndryshon në C$1 sepse referenca e kolonës është relative. Rrjedhimisht, COLUMNS($A$1:C$1) vlerësohet në 3 duke detyruar VLOOKUP të kthejë një vlerë nga kolona e 3-të.
Kjo formulë funksionon shkëlqyeshëm për 2 - 3 fletë kërkimi. Nëse keni më shumë, IFERROR-et e përsëritura bëhen shumë të rënda. Shembulli tjetër demonstron një qasje pak më të komplikuar, por shumë më elegante.
Vlookupimi i shumë fletëve me INDIRECT
Një mënyrë tjetër për të Vlookup midis fletëve të shumta në Excel është përdorimi i një kombinimi të VLOOKUP dhe Funksionet INDIRECT. Kjo metodë kërkon pak përgatitje, por në fund, do të keni një formulë më kompakte për Vlookup në çdo numër fletëllogaritëse.
Një formulë e përgjithshme për Vlookup nëpër fletë është si më poshtë:
VLOOKUP( vlera_kërkuese , INDIRECT("'"&INDEX( Fletët_kërkuese , MATCH(1, --(COUNTIF(INDIRECT("'" & Fletët_kërkuese & " '! gama_kërkuese "), vlera_kërkuese )>0), 0)) & "'! varg_tabele "), numri_indeksi_col_2> , FALSE)Ku:
- Fletët_kërkuese - një gamë e emërtuar që përbëhet nga emrat e fletëve të kërkimit.
- Vlera_kërkimi - vlera për të kërkuar.
- Vendi_kërkimi - diapazoni i kolonës në fletët e kërkimit ku të kërkoni për kërkiminvlera.
- Table_array - diapazoni i të dhënave në fletët e kërkimit.
- Col_index_num - numri i kolonës në grupin e tabelës nga e cila do të kthe një vlerë.
Që formula të funksionojë si duhet, ju lutemi mbani parasysh paralajmërimet e mëposhtme:
- Është një formulë grupi, e cila duhet të plotësohet duke shtypur Ctrl + Shift + Enter së bashku.
- Të gjitha fletët duhet të kenë të njëjtin rend të kolonave .
- Ndërsa përdorim një grup tabelash për të gjitha fletët e kërkimit, specifikoni vargu më i madh nëse fletët tuaja kanë numër të ndryshëm rreshtash.
Si të përdorni formulën për të Vlookup nëpër fletë
Për të Vlookupuar shumë fletë në të njëjtën kohë, kryeni këto hapat:
- Shkruani të gjithë emrat e fletëve të kërkimit diku në librin tuaj të punës dhe emërtoni atë diapazon ( Fletët_kërkimi në rastin tonë).
- kërkojmë për vlerën A2 ( vlera_lookup )
- në diapazonin A2:A6 ( range_lookup ) në katër fletë pune ( Lindje , Veri , Jug dhe Perëndim ) dhe
- tërheq vlerat që përputhen nga kolona B, e cila është kolona 2 ( col_index_num ) në diapazonin e të dhënave A2:C6 ( array_tabela ).
Me argumentet e mësipërme, formula merr këtë formë:
=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)
Ju lutemi vini re se ne i kyçim të dy vargjet ($A$2:$A$6 dhe $A$2:$C$6) me referenca absolute të qelizave.
Si si rezultat, ne kemi formulën për të kërkuar numrin e porosisë në 4 fletë dhe për të marrë artikullin përkatës. Nëse një numër specifik porosie nuk gjendet, shfaqet një gabim #N/A si në rreshtin 14:
Për të kthyer shumën, thjesht zëvendësoni 2 me 3 në col_index_num Argumenti pasi shumat janë në kolonën e tretë të grupit të tabelës:
=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)
Nëse dëshironi të zëvendësoni shënimin standard të gabimit #N/A me tekstin tuaj, mbështilleni formulën në funksionin 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")
Vlerëso fletë të shumta ndërmjet librave të punës
Kjo formulë gjenerike (ose çdo variacion i saj) mund të përdoret gjithashtu për të Vlookup fletë të shumta në një libër pune të ndryshëm . Për këtë, lidhni emrin e librit të punës brenda INDIRECT, siç tregohet në formulën e mëposhtme:
=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")
Vlerësoni midis fletëve dhe ktheni disa kolona
Nëse dëshironi të tërheqni të dhëna nga disa kolona, një formulë e grupit me shumë qeliza mund ta bëjë këtë me një lëvizje. Për të krijuar një formulë të tillë, jepni një konstante grupi për argumentin col_index_num .
Në këtë shembull, ne dëshirojmë të kthejmë emrat e artikujve (kolona B) dhe shumat (kolona C), të cilat janë përkatësisht kolonat e 2-të dhe të 3-ta në grupin e tabelës. Pra, grupi i kërkuar është{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)
Për të futur saktë formulën në shumë qeliza, kjo është ajo që duhet të bëni:
- Në rreshtin e parë, zgjidhni të gjitha qelizat që do të plotësohen (B2:C2 në shembullin tonë).
- Shkruani formulën dhe shtypni Ctrl + Shift + Enter . Kjo fut të njëjtën formulë në qelizat e zgjedhura, të cilat do të kthejnë një vlerë të ndryshme në secilën kolonë.
- Zvarrite formulën në rreshtat e mbetur.
Si funksionon kjo formulë
Për të kuptuar më mirë logjikën, le ta zbërthejmë këtë formulë bazë në funksionet individuale:
=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)
Duke punuar nga brenda jashtë, ja çfarë bën formula:
COUNTIF dhe INDIRECT
Me pak fjalë, INDIRECT ndërton referencat për të gjitha fletët e kërkimit dhe COUNTIF numëron dukuritë e kërkimit vlera (A2) në secilën fletë:
--(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)
Me më shumë detaje:
Së pari, ju lidhni emrin e gamës (Fletët e kërkimit) dhe referencën e diapazonit ($A$2: $A$6), duke shtuar apostrofat dhe pikëçuditjen në vendet e duhura për të bërë një referencë të jashtme dhe futni vargun e tekstit që rezulton në funksionin INDIRECT për t'iu referuar në mënyrë dinamike fletëve të kërkimit:
INDIRECT({"'East'!$A$2:$A$6"; "'South'!$A$2:$A$6"; "'North'!$A$2:$A$6"; "'West'!$A$2:$A$6"})
COUNTIF kontrollon çdo qelizë në diapazonin A2:A6 në çdo fletë kërkimi kundrejt vlerës në A2 në kryesore fletë dhe kthen numrin e ndeshjeve për secilën fletë. Në grupin tonë të të dhënave, numri i porosisë në A2 (101) gjendet në fletën West , e cila është e katërta nëvarg i emërtuar, kështu që COUNTIF kthen këtë grup:
{0;0;0;1}
Më pas, ju krahasoni çdo element të grupit të mësipërm me 0:
--({0; 0; 0; 1}>0)
Kjo jep një grup vlerash TRUE (më e madhe se 0) dhe FALSE (e barabartë me 0), të cilat i detyroni në 1 dhe 0 duke përdorur një unary të dyfishtë (--), dhe si rezultat merrni grupin e mëposhtëm:
{0; 0; 0; 1}
Ky operacion është një masë paraprake shtesë për të trajtuar një situatë kur një fletë kërkimi përmban disa ndodhi të vlerës së kërkimit, në të cilin rast COUNTIF do të kthente një numërim më të madh se 1, ndërsa ne duam vetëm 1 dhe 0 në grupi përfundimtar (në një moment, do ta kuptoni pse).
Pas gjithë këtyre transformimeve, formula jonë duket si më poshtë:
VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)
INDEX dhe MATCH
Në këtë pikë, një kombinim klasik INDEX MATCH hap në:
INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))
Funksioni MATCH i konfiguruar për përputhje të saktë (0 në argumentin e fundit) kërkon vlerën 1 në grup { 0;0;0;1} dhe kthen pozicionin e tij, i cili është 4:
INDEX(Lookup_sheets, 4)
Funksioni INDEX përdor numrin e kthyer nga MATCH si argumenti i numrit të rreshtit (rrjesht_num), dhe kthen vlerën e 4-të në diapazonin e emërtuar Fletët_kërkuese , që është Perëndim .
Pra, formula redukton më tej në:
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP dhe INDIRECT
Funksioni INDIRECT përpunon vargun e tekstit brenda tij:
INDIRECT("'"&"West"&"'!$A$2:$C$6")
Dhe e konverton atë në një referencë që shkon te argumenti table_array të