Enhavtabelo
La lernilo montras kiel uzi la funkcion VLOOKUP por kopii datumojn de alia laborfolio aŭ laborlibro, Vserĉo en pluraj folioj, kaj rigardi supren dinamike por redoni valorojn de malsamaj folioj en malsamajn ĉelojn.
Kiam vi serĉas informojn en Excel, estas malofta kazo, kiam ĉiuj datumoj estas sur la sama folio. Pli ofte, vi devos serĉi tra pluraj folioj aŭ eĉ malsamaj laborlibroj. La bona novaĵo estas, ke Microsoft Excel provizas pli ol unu manieron fari tion, kaj la malbona novaĵo estas, ke ĉiuj manieroj estas iom pli komplikaj ol norma VLOOKUP-formulo. Sed kun nur iom da pacienco, ni eltrovos ilin :)
Kiel VLOOKUP inter du folioj
Por komenci, ni esploru plej simplan kazon - uzante VLOOKUP por kopii datumojn de alia laborfolio. Ĝi estas tre simila al regula VLOOKUP formulo kiu serĉas sur la sama laborfolio. La diferenco estas, ke vi inkluzivas la folian nomon en la argumenton table_array por diri al via formulo, en kiu laborfolio troviĝas la serĉa gamo.
La ĝenerala formulo por VLOOKUP de alia folio estas jena:
VLOOKUP(serĉa_valoro, Sheet!range, col_index_num, [range_lookup])Ekzemple, ni tiru la vendajn ciferojn de jan raporto al Resumo folio. Por tio, ni difinas la jenajn argumentojn:
- Serĉaj_valoroj estas en kolumno A sur la Resumo folio, kaj niVLOOKUP:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
Fine, ĉi tiu tre norma VLOOKUP-formulo serĉas la A2-valoron en la unua kolumno de la gamo A2:C6 sur la Okcidenta folio kaj liveras kongruo el la 2-a kolumno. Jen!
Dinamika VSERĈO por resendi datumojn de pluraj folioj en malsamajn ĉelojn
Unue, ni difinu, kion ĝuste signifas la vorto "dinamika" en ĉi tiu kunteksto kaj kiel ĉi tiu formulo estos; malsama de la antaŭaj.
Se vi havas grandajn pecojn da datumoj en la sama formato, kiuj estas dividitaj en pluraj kalkultabeloj, vi eble volas ĉerpi informojn el malsamaj folioj en malsamajn ĉelojn. La ĉi-suba bildo ilustras la koncepton:
Malkiel la antaŭaj formuloj, kiuj reprenis valoron de specifa folio bazita sur unika identigilo, ĉi-foje ni serĉas ĉerpi valorojn de pluraj folioj samtempe. tempo.
Estas du malsamaj solvoj por ĉi tiu tasko. En ambaŭ kazoj, vi devas fari iom da prepara laboro kaj krei nomitajn intervalojn por datumĉeloj en ĉiu serĉfolio. Por ĉi tiu ekzemplo, ni difinis la sekvajn gamojn:
- Orienta_Vendo - A2:B6 sur la Orienta folio
- Norda_Vendo - A2: B6 sur la Norda folio
- Suda_Vento - A2:B6 sur la Suda folio
- Okcidenta_Vendo - A2:B6 sur la Okcidenta folio
VLOOKUP kaj nestitaj IF-oj
Se vi havas akcepteblan nombron da folioj por serĉi, vi povas uzi nestitajn IF-funkciojn.elekti la folion surbaze de la ŝlosilvortoj en la antaŭdifinitaj ĉeloj (ĉeloj B1 ĝis D1 en nia kazo).
Kun la serĉvaloro en A2, la formulo estas jena:
=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)
Tradukita en la anglan, la IF-parto tekstas:
Se B1 estas Orienta , rigardu en la intervalon nomitan Orienta_Vendoj ; se B1 estas Norda , rigardu en la gamo nomita Norda_Vendoj ; se B1 estas Suda , rigardu en la gamo nomita Suda_Vendoj ; kaj se B1 estas Okcidenta , rigardu en la gamo nomita Okcidenta_Vendo .
La intervalo resendita de IF iras al table_array de VLOOKUP, kiu tiras kongrua valoro el la 2-a kolumno sur la responda folio.
La lerta uzo de miksaj referencoj por la serĉvaloro ($A2 - absoluta kolumno kaj relativa vico) kaj la logika testo de IF (B$1 - relativa kolumno). kaj absoluta vico) ebligas kopii la formulon al aliaj ĉeloj sen ŝanĝoj - Excel ĝustigas la referencojn aŭtomate surbaze de la relativa pozicio de vico kaj kolumno.
Do, ni enigas la formulon en B2, kopiu ĝin ĝuste kaj malsupren al tiom da kolumnoj kaj vicoj laŭbezone, kaj ricevu la sekvan rezulton:
NENEKRETA VSERĈO
Kiam laboras kun multaj folioj, pluraj nestitaj niveloj ankaŭ povus fari la formulon. longa kaj malfacile legebla. Multe pli bona maniero estas krei dinamikan vserĉan gamon helpe de INDIREKTA:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
Ĉi tie, ni kunligas la referencon al la ĉelo kiu enhavasunika parto de la nomita gamo (B1) kaj la komuna parto (_Vendoj). Ĉi tio produktas tekstĉenon kiel "East_Sales", kiun INDIREKTE konvertas al la intervalnomo komprenebla de Excel.
Kiel rezulto, vi ricevas kompaktan formulon, kiu bele funkcias sur ajna nombro da folioj:
Tiel estas kiel Vserĉu inter folioj kaj dosieroj en Excel. Mi dankas vin pro legado kaj esperas vidi vin en nia blogo venontsemajne!
Praktiku laborlibron por elŝuto
Voki plurfoliojn ekzemplojn (.xlsx-dosiero)
referencu al la unua datumĉelo, kiu estas A2. - Tabelo_abelo estas la intervalo A2:B6 sur la Jan-folio. Por referenci ĝin, prefiksu la intervalreferencon kun la folinomo sekvata de la ekkria signo: Jan!$A$2:$B$6.
Bonvolu atenti, ke ni ŝlosu la gamon per absolutaj ĉelaj referencoj por malhelpi ĝin ŝanĝiĝi dum kopiado de la formulo al aliaj ĉeloj.
Col_index_num estas 2 ĉar ni volas kopii valoron. de kolumno B, kiu estas la dua kolumno en la tabela tabelo.
Vidu ankaŭ: VLOOKUP tra pluraj folioj en Excel kun ekzemploj - Range_lookup estas agordita al FALSE por serĉi ĝustan kongruon.
Kunigante la argumentojn, ni ricevas ĉi tiun formulon:
=VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)
Trenu la formulon malsupren la kolumnon kaj vi ricevos ĉi tiun rezulton:
En simile, vi povas Vserĉi datumojn de la Feb kaj Mar folioj:
=VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)
=VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)
Konsiloj kaj notoj:
- Se la folionomo enhavas spacojn aŭ ne-alfabetajn signojn , ĝi devas esti enmetita inter unuopaj citiloj, kiel 'Jan Vendoj'!$A$2:$B$6 . Por pliaj informoj, bonvolu vidi Kiel referenci alian folion en Excel.
- Anstataŭ tajpi folinomon rekte en formulo, vi povas ŝanĝi al la serĉa laborfolio kaj elekti la gamon tie. Excel aŭtomate enmetos referencon kun la ĝusta sintakso, ŝparante al vi la problemon kontroli la nomon kaj solvi problemojn.
Vserĉo el malsama laborlibro
Al VSERĈO inter dulaborlibroj, enmetu la dosiernomon inter kvadrataj krampoj, sekvitan de la folinomo kaj la ekkrio.
Ekzemple, por serĉi A2-valoron en la intervalo A2:B6 sur Jan folio en la Sales_reports.xlsx laborlibro, uzu ĉi tiun formulon:
=VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)
Por plenaj detaloj, bonvolu vidi VLOOKUP de alia laborlibro en Excel.
VLookup across pluraj folioj kun IFERROR
Kiam vi bezonas serĉi inter pli ol du folioj, la plej facila solvo estas uzi VLOOKUP kombine kun IFERROR. La ideo estas nestumi plurajn funkciojn de IFERARO por kontroli plurajn laborfoliojn unu post alia: se la unua VSERĈO ne trovas kongruon sur la unua folio, serĉu en la sekva folio, kaj tiel plu.
IFERARO(VLOOKUP (...)), IFERARO(VLOOKUP(…), …, " Ne trovita "))Por vidi kiel ĉi tiu aliro funkcias en realaj datumoj, ni konsideru la sekvan ekzemplon. Malsupre estas la Resumo -tabelo, kiun ni volas plenigi per la objektonomoj kaj kvantoj serĉante la mendnumeron en Okcidenta kaj Orienta folioj:
Unue, ni tiri la erojn. Por ĉi tio, ni instrukcias al la formulo VLOOKUP serĉi la ordon nombron en A2 sur la folio Orienta kaj redoni la valoron el kolumno B (dua kolumno en table_array A2:C6). Se preciza kongruo ne estas trovita, tiam serĉu en la Okcidenta folio. Se ambaŭ Vserĉoj malsukcesas, revenu "Ne trovita".
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))
Por redoni la kvanton,simple ŝanĝu la kolumnan indeksan numeron al 3:
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))
Konsileto. Se necesas, vi povas specifi malsamajn tabelajn tabelojn por malsamaj funkcioj VLOOKUP. En ĉi tiu ekzemplo, ambaŭ serĉfolioj havas la saman nombron da vicoj (A2:C6), sed viaj laborfolioj povas esti malsamaj laŭ grandeco.
Vserĉo en pluraj laborlibroj
Por Vserĉo inter du aŭ pli da laborlibroj, enmetu la laborlibronomon inter kvadrataj krampoj kaj metu ĝin antaŭ la folinomo. Ekzemple, jen kiel vi povas Vserĉi en du malsamaj dosieroj ( Libro1 kaj Libro2 ) kun ununura 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),"Not found"))
Igu kolumnan indeksan nombron dinamika al pluraj kolumnoj de Vlookup
En situacio kiam vi bezonas resendi datumojn de pluraj kolumnoj, dinamikigi col_index_num povus ŝpari al vi iom da tempo. Estas kelkaj ĝustigoj fareblaj:
- Por la argumento col_index_num , uzu la funkcion COLUMNS kiu liveras la nombron da kolumnoj en specifa tabelo: COLUMNS($A$1 :B$1). (La vickoordinato ne vere gravas, ĝi povas esti nur ajna vico.)
- En la argumento serĉa_valoro , ŝlosu la kolumnan referencon per la $-signo ($A2), do ĝi restas riparita dum kopiado de la formulo al aliaj kolumnoj.
Kiel rezulto, vi ricevas specon de dinamika formulo, kiu ĉerpas kongruajn valorojn de malsamaj kolumnoj, depende de al kiu kolumno la formulo estas kopiita:
=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"))
Enigite en kolumno B, KOLUNOJ ($A$1:B$1)taksas al 2 dirante al VLOOKUP redoni valoron de la 2-a kolumno en la tabela tabelo.
Kiam kopiite al kolumno C (t.e. vi trenis la formulon de B2 al C2), B$1 ŝanĝas al C$1 ĉar la kolumna referenco estas relativa. Sekve, COLUMNS($A$1:C$1) taksas 3 devigante VLOOKUP redoni valoron el la 3-a kolumno.
Ĉi tiu formulo funkcias bonege por 2 - 3 serĉfolioj. Se vi havas pli, ripetaj IFERAROJ fariĝas tro maloportuna. La sekva ekzemplo montras iom pli komplikan sed multe pli elegantan aliron.
Voki plurajn foliojn per INDIREKTA
Unu plia maniero por Vserĉo inter pluraj folioj en Excel estas uzi kombinaĵon de VLOOKUP kaj NEREKTAJ funkcioj. Ĉi tiu metodo postulas iom da preparo, sed finfine vi havos pli kompaktan formulon por Vserĉo en ajna nombro da kalkultabeloj.
Genera formulo por Vserĉo trans folioj estas jena:
VSERĈO( serĉa_valoro , INDIREKTA("'"&INDEX( Serĉfolioj , MATCH(1, --(NOMBRUSE(INDIREKTA("'" & Serĉfolioj & " '! serĉa_gamo "), serĉa_valoro )>0), 0)) & "'! tabla_abelo "), kol_index_num , FALSE)Kie:
- Serĉfolioj - nomita gamo konsistanta el la serĉfolionomoj.
- Serĉa_valoro - la valoro serĉenda.
- Lookup_range - la kolumna gamo en la serĉfolioj kie serĉi la serĉonvaloro.
- Table_array - la datumintervalo en la serĉfolioj.
- Col_index_num - la nombro de la kolumno en la tabela tabelo de kiu al redonu valoron.
Por ke la formulo funkciu ĝuste, bonvolu memori la sekvajn avertojn:
- Ĝi estas tabelformulo, kiu devas esti kompletigita per premado de Ctrl + Shift + Entajpu klavojn kune.
- Ĉiuj folioj devas havi la san ordon de kolumnoj .
- Ĉar ni uzas unu tabelan tabelon por ĉiuj serĉfolioj, specifu la plej granda gamo se viaj folioj havas malsamajn nombrojn da vicoj.
Kiel uzi la formulon por Vserĉi trans folioj
Por Vserĉi plurajn foliojn samtempe, faru ĉi tiujn paŝoj:
- Notu ĉiujn serĉfolionomojn ie en via laborlibro kaj nomu tiun gamon ( Serĉfolioj en nia kazo).
- serĉado por A2-valoro ( serĉa_valoro )
- en la intervalo A2:A6 ( serĉa_gamo ) en kvar laborfolioj ( Orienta , Norda , Suda kaj Okcidenta ), kaj
- tiri kongruajn valorojn el kolumno B, kiu estas kolumno 2 ( col_index_num ) en la datuma gamo A2:C6 ( table_array ).
Kun la supraj argumentoj, la formulo prenas ĉi tiun formon:
=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)
Bonvolu rimarki, ke ni ŝlosas ambaŭ gamojn ($A$2:$A$6 kaj $A$2:$C$6) per absolutaj ĉelaj referencoj.
Kiel la rezulto, ni havas la formulon por serĉi la mendan numeron en 4 folioj kaj preni la respondan eron. Se specifa ordonumero ne estas trovita, #N/A eraro montriĝas kiel en la vico 14:
Por redoni la kvanton, simple anstataŭigu 2 per 3 en la col_index_num. argumento ĉar kvantoj estas en la 3-a kolumno de la tabela tabelo:
=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)
Se vi ŝatus anstataŭigi la norman erarnotacion #N/A per via propra teksto, envolvu la formulo en la IFNA-funkcion:
=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")
Vidu plurajn foliojn inter laborlibroj
Tiu ĉi ĝenerala formulo (aŭ ĝia ajna vario) ankaŭ povas esti uzata al Vserĉu plurajn foliojn en malsama laborlibro . Por tio, kunligu la nomon de la librolibro ene de INDIREKTA kiel montrite en la suba formulo:
=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")
Voki inter folioj kaj redonu plurajn kolumnojn
Se vi volas eltiri datumojn el pluraj kolumnoj, multĉela tabelformulo povas fari tion unufoje. Por krei tian formulon, liveru tabelkonstanton por la argumento col_index_num .
En ĉi tiu ekzemplo, ni volas redoni la eronnomojn (kolumno B) kaj kvantojn (kolumno C), kiuj estas la 2-a kaj 3-a kolumnoj en la tabela tabelo, respektive. Do, la bezonata tabelo estas{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)
Por ĝuste enigi la formulon en pluraj ĉeloj, jen kion vi devas fari:
- En la unua vico, elektu ĉiujn ĉelojn por esti plenigitaj (B2:C2 en nia ekzemplo).
- Tajpu la formulon kaj premu Ctrl + Shift + Enigu . Ĉi tio enigas la saman formulon en la elektitajn ĉelojn, kiuj redonos malsaman valoron en ĉiu kolumno.
- Trenu la formulon malsupren al la ceteraj vicoj.
Kiel funkcias ĉi tiu formulo
Por pli bone kompreni la logikon, ni disigu ĉi tiun bazan formulon al la unuopaj funkcioj:
=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)
Laborante de interne eksteren, jen kion faras la formulo:
COUNTIF kaj INDIRECT
Mallonge, INDIRECT konstruas la referencojn por ĉiuj serĉfolioj, kaj COUNTIF nombras la okazojn de la serĉo. valoro (A2) en ĉiu folio:
--(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)
Pli detale:
Unue, vi kunligas la intervalnomon (Lookup_sheets) kaj la intervalreferencon ($A$2: $A$6), aldonante apostrofojn kaj la ekkriopunkton en la ĝustaj lokoj por fari eksteran referencon, kaj pasigi la rezultan tekstan ĉenon al la NIREKTA funkcio por dinamike referenci al la serĉfolioj:
INDIRECT({"'East'!$A$2:$A$6"; "'South'!$A$2:$A$6"; "'North'!$A$2:$A$6"; "'West'!$A$2:$A$6"})
COUNTIF kontrolas ĉiun ĉelon en la intervalo A2:A6 sur ĉiu serĉfolio kontraŭ la valoro en A2 sur la ĉefa folio kaj resendas la nombron de kongruoj por ĉiu folio. En nia datumaro, la ordonumero en A2 (101) troviĝas en la folio Okcidenta , kiu estas la 4-a en lanomita gamo, do COUNTIF redonas ĉi tiun tabelon:
{0;0;0;1}
Sekva, vi komparas ĉiun elementon de la supra tabelo kun 0:
--({0; 0; 0; 1}>0)
Tio donas tabelo de VERA (pli granda ol 0) kaj FALSA (egala al 0) valoroj, kiujn vi devigas al 1 kaj 0 uzante duoblan unaran (--), kaj ricevas la sekvan tabelon kiel rezulto:
{0; 0; 0; 1}
Ĉi tiu operacio estas kroma antaŭzorgo por trakti situacion kiam serĉfolio enhavas plurajn aperon de la serĉvaloro, en kiu kazo COUNTIF redonus nombradon pli granda ol 1, dum ni volas nur 1'oj kaj 0'oj en la fina tabelo (post momento, vi komprenos kial).
Post ĉiuj ĉi tiuj transformoj, nia formulo aspektas jene:
VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)
INDEX kaj MATCH
Je ĉi tiu punkto, klasika INDEX-MATCH-kombinaĵo enpaŝas:
INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))
La MATCH-funkcio agordita por ĝusta kongruo (0 en la lasta argumento) serĉas la valoron 1 en la tabelo { 0;0;0;1} kaj redonas ĝian pozicion, kiu estas 4:
INDEX(Lookup_sheets, 4)
La funkcio INDEX uzas la nombron redonitan per MATCH kiel la viconumero argumento (vic_num), kaj liveras la 4-an valoron en la nomita intervalo Serĉfolioj , kiu estas Okcidenta .
Do, la formulo plu reduktas al:
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP kaj INDIREK
La INDIREKTA funkcio prilaboras la tekstan ĉenon en ĝi:
INDIRECT("'"&"West"&"'!$A$2:$C$6")
Kaj konvertas ĝin en referencon kiu iras al la argumento table_array de