Obsah
Na těchto příkladech se naučíte, jak provádět Vlookup podle více kritérií, vracet konkrétní instance nebo všechny shody, provádět dynamický Vlookup ve více listech a další.
Jedná se o druhou část seriálu, která vám pomůže využít sílu funkce VLOOKUP aplikace Excel. Příklady předpokládají, že víte, jak tato funkce funguje. Pokud ne, je rozumné začít základním použitím funkce VLOOKUP v aplikaci Excel.
Než se posuneme dále, dovolte mi, abych vám stručně připomněl syntaxi:
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])Nyní, když jsou všichni na stejné vlně, podívejme se blíže na příklady pokročilých vzorců VLOOKUP:
Jak vyhledat více kritérií
Funkce VLOOKUP aplikace Excel je opravdu užitečná, pokud jde o vyhledávání určité hodnoty v databázi. Chybí jí však důležitá vlastnost - její syntaxe umožňuje vyhledat pouze jednu hodnotu. Co když ale chcete vyhledávat s několika podmínkami? Na výběr máte několik různých řešení.
Vzorec 1. VLOOKUP se dvěma kritérii
Předpokládejme, že máte seznam objednávek a chcete zjistit množství na základě 2 kritérií, Jméno zákazníka a Produkt Komplikací je, že každý zákazník si objednal více produktů, jak je uvedeno v tabulce níže:
Obvyklý vzorec VLOOKUP v této situaci nefunguje, protože vrací první nalezenou shodu na základě jediné zadané hodnoty vyhledávání.
Tento problém můžete vyřešit přidáním pomocného sloupce a spojením hodnot ze dvou vyhledávacích sloupců ( Zákazník a Produkt ). Důležité je, aby pomocný sloupec byl sloupec úplně vlevo sloupec v poli tabulky, protože v něm Excel VLOOKUP vždy hledá hodnotu vyhledávání.
Přidejte tedy vlevo od tabulky sloupec a zkopírujte přes něj níže uvedený vzorec. Tím se pomocný sloupec naplní hodnotami ze sloupců B a C (pro lepší čitelnost je mezi nimi spojen znak mezery):
=B2&" "&C2
A pak použijte standardní vzorec VLOOKUP a obě kritéria umístěte do pole lookup_value oddělené mezerou:
=VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)
Nebo zadejte kritéria do samostatných buněk (v našem případě G1 a G2) a tyto buňky spojte:
=VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)
Protože chceme vrátit hodnotu ze sloupce D, který je čtvrtý v tabulkovém poli, použijeme 4 pro. col_index_num . range_lookup argument je nastaven na hodnotu FALSE, aby Vlookup zobrazil přesnou shodu. Výsledek ukazuje obrázek níže:
V případě, že je vaše vyhledávací tabulka v další list , uveďte název listu do vzorce VLOOKUP. Například:
=VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)
Případně vytvořte pojmenovaný rozsah pro vyhledávací tabulku (např., Objednávky ), aby byl vzorec přehlednější:
=VLOOKUP(G1&" "&G2, Objednávky, 4, FALSE)
Další informace naleznete v části Jak v aplikaci Excel provést vyhledávání z jiného listu.
Poznámka: Aby vzorec fungoval správně, měly by být hodnoty v pomocném sloupci zřetězeny přesně stejným způsobem jako ve sloupci. lookup_value Například jsme použili znak mezery k oddělení kritérií jak v pomocném sloupci (B2&" "&C2), tak ve vzorci VLOOKUP (G1&" "&G2).
Vzorec 2. Excel VLOOKUP s více podmínkami
Teoreticky můžete výše uvedený přístup použít k vyhledávání více než dvou kritérií. Existuje však několik výhrad. Zaprvé, hodnota vyhledávání je omezena na 255 znaků a zadruhé, návrh pracovního listu nemusí umožňovat přidání pomocného sloupce.
Naštěstí Microsoft Excel často nabízí více než jeden způsob, jak provést stejnou věc. Chcete-li vyhledat více kritérií, můžete použít buď kombinaci INDEX MATCH, nebo funkci XLOOKUP, která byla nedávno představena v Office 365.
Například pro vyhledávání na základě 3 různých hodnot ( Datum , Jméno zákazníka a Produkt ), použijte jeden z následujících vzorců:
=INDEX(D2:D11, MATCH(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), 0))
=XLOOKUP(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), D2:D11)
Kde:
- G1 je kritérium 1 (datum)
- G2 je kritérium 2 (jméno zákazníka)
- G3 je kritérium 3 (produkt)
- A2:A11 je rozsah vyhledávání 1 (data)
- B2:B11 je rozsah vyhledávání 2 (jména zákazníků)
- C2:C11 je rozsah vyhledávání 3 (produkty)
- D2:D11 je rozsah návratnosti (množství)
Poznámka: Ve všech verzích kromě Excelu 365 se INDEX MATCH zadává jako vzorec CSE pole stisknutím kláves Ctrl + Shift + Enter. V Excelu 365, který podporuje dynamická pole, funguje také jako běžný vzorec.
Podrobné vysvětlení vzorců naleznete na adrese:
- XLOOKUP s více kritérii
- Vzorec INDEX MATCH s více kritérii
Jak použít VLOOKUP k získání 2., 3. nebo n-té shody
Jak již víte, Excel VLOOKUP dokáže získat pouze jednu odpovídající hodnotu, přesněji řečeno vrátí první nalezenou shodu. Ale co když je ve vašem vyhledávacím poli více shod a vy chcete získat 2. nebo 3. případ? Úkol zní poměrně složitě, ale řešení existuje!
Vzorec 1. Vlookup N-tý případ
Předpokládejme, že v jednom sloupci máte jména zákazníků, v druhém sloupci produkty, které zakoupili, a hledáte 2. nebo 3. produkt zakoupený daným zákazníkem.
Nejjednodušší způsob je přidat vlevo od tabulky pomocný sloupec, jako jsme to udělali v prvním příkladu. Tentokrát jej však naplníme jmény zákazníků a čísly výskytů, jako je " John Doe1 ", " Neznámý2 " atd.
Chcete-li získat výskyt, použijte funkci COUNTIF se smíšeným odkazem na rozsah (první odkaz je absolutní a druhý relativní jako $B$2:B2). Protože se relativní odkaz mění podle polohy buňky, do které je vzorec kopírován, v řádku 3 se z něj stane $B$2:B3, v řádku 4 - $B$2:B4 atd.
Po spojení s názvem zákazníka (B2) má vzorec tento tvar:
=B2&COUNTIF($B$2:B2, B2)
Výše uvedený vzorec se vloží do A2 a poté se zkopíruje do tolika buněk, kolik je potřeba.
Poté zadejte název cíle a číslo výskytu do samostatných buněk (F1 a F2) a použijte níže uvedený vzorec pro Vlookup konkrétního výskytu:
=VLOOKUP(F1&F2, A2:C11, 3, FALSE)
Vzorec 2. Vlookup 2. výskyt
Pokud hledáte 2. instanci hodnoty vyhledávání, pak se obejdete bez pomocného sloupce. Místo toho vytvořte pole tabulky dynamicky pomocí funkce INDIRECT spolu s funkcí MATCH:
=VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)
Kde:
- E1 je vyhledávací hodnota
- A2:A11 je rozsah vyhledávání
- B11 je poslední (pravá dolní) buňka vyhledávací tabulky.
Upozorňujeme, že výše uvedený vzorec je napsán pro konkrétní případ, kdy datové buňky v tabulce vyhledávání začínají v řádku 2. Pokud se vaše tabulka nachází někde uprostřed listu, použijte tento univerzální vzorec, kde A1 je levá horní buňka tabulky vyhledávání obsahující záhlaví sloupce:
=VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE)
Jak tento vzorec funguje
Zde je klíčová část vzorce, která vytváří dynamický rozsah vyhledávání :
INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")
Funkce MATCH nakonfigurovaná pro přesnou shodu (0 v posledním argumentu) porovná cílové jméno (E1) se seznamem jmen (A2:A11) a vrátí pozici první nalezené shody, což je v našem případě 3. Toto číslo bude použito jako počáteční souřadnice řádku pro rozsah vlookup, takže k němu přičteme 2 (+1 pro vyloučení prvního případu a +1 pro vyloučení řádku 1 se záhlavími sloupců).Případně můžete použít funkci 1+ROW(A1), která automaticky vypočítá potřebnou úpravu na základě pozice řádku záhlaví (v našem případě A1).
Výsledkem je následující textový řetězec, který INDIRECT převede na odkaz na rozsah:
INDIRECT("A"&5&":B11") -> A5:B11
Tento rozsah sahá až k table_array argumentu VLOOKUP, který nutí začít hledat v řádku 5 a vynechá první případ hodnoty vyhledávání:
VLOOKUP(E1, A5:B11, 2, FALSE)
Jak v aplikaci Excel použít funkci Vlookup a vrátit více hodnot
Funkce VLOOKUP aplikace Excel je navržena tak, aby vrátila pouze jednu shodu. Existuje způsob, jak VLOOKUP použít ve více případech? Ano, existuje, i když není jednoduchý. Vyžaduje to kombinované použití několika funkcí, jako je INDEX, SMALL a ROW je vzorec pole.
Například níže uvedený příkaz může najít všechny výskyty hodnoty F2 v rozsahu B2:B16 a vrátit více shod ze sloupce C:
{=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}
Do pracovního listu můžete vzorec zadat dvěma způsoby:
- Zadejte vzorec do první buňky, stiskněte klávesovou zkratku Ctrl + Shift + Enter a poté jej přetáhněte dolů do několika dalších buněk.
- Vyberte několik sousedních buněk v jednom sloupci (F1:F11 na obrázku níže), zadejte vzorec a dokončete jej stisknutím kláves Ctrl + Shift + Enter.
V každém případě by počet buněk, do kterých zadáváte vzorec, měl být stejný nebo větší než maximální počet možných shod.
Podrobné vysvětlení logiky vzorce a další příklady naleznete v části Jak v aplikaci Excel použít VLOOKUP pro více hodnot.
Jak provádět vyhledávání v řádcích a sloupcích (obousměrné vyhledávání)
Obousměrné vyhledávání (aka vyhledávání matic nebo 2-rozměrné vyhledávání ) je módní výraz pro vyhledání hodnoty v průsečíku určitého řádku a sloupce. Existuje několik různých způsobů, jak v Excelu provádět dvourozměrné vyhledávání, ale protože se v tomto kurzu zaměříme na funkci VLOOKUP, budeme ji přirozeně používat.
Pro tento příklad vezmeme níže uvedenou tabulku s měsíčními prodeji a vytvoříme vzorec VLOOKUP pro získání údaje o prodeji konkrétní položky v daném měsíci.
S názvy položek v A2:A9, názvy měsíců v B1:F1, cílovou položkou v I1 a cílovým měsícem v I2 je vzorec následující:
=VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)
Jak tento vzorec funguje
Jádrem vzorce je standardní funkce VLOOKUP, která hledá přesnou shodu s hodnotou vyhledávání v I1. Protože však nevíme, ve kterém přesně sloupci se nachází tržby za konkrétní měsíc, nemůžeme číslo sloupce zadat přímo do funkce VLOOKUP. col_index_num Pro vyhledání tohoto sloupce použijeme následující funkci MATCH:
MATCH(I2, A1:F1, 0)
Přeloženo do češtiny, vzorec říká: vyhledej hodnotu I2 v A1:F1 a vrať její relativní pozici v poli. Tím, že do 3. argumentu uvedete 0, dáte MATCH pokyn, aby našel hodnotu, která se přesně rovná vyhledávací hodnotě (je to jako použít FALSE pro příkaz range_lookup argumentu VLOOKUP).
Vzhledem k tomu, že Mar je ve 4. sloupci vyhledávacího pole, funkce MATCH vrátí hodnotu 4, která přejde přímo do pole. col_index_num argument VLOOKUP:
VLOOKUP(I1, A2:F9, 4, FALSE)
Věnujte prosím pozornost tomu, že ačkoli názvy měsíců začínají ve sloupci B, pro vyhledávací pole používáme A1:I1. Je to proto, aby číslo vrácené funkcí MATCH odpovídalo pozici sloupce v tabulce. table_array VLOOKUP.
Další způsoby vyhledávání matic v aplikaci Excel naleznete v části INDEX MATCH MATCH a další vzorce pro dvourozměrné vyhledávání.
Jak provést vícenásobný Vlookup v aplikaci Excel (vnořený Vlookup)
Někdy se může stát, že hlavní tabulka a tabulka vyhledávání nemají společný ani jeden sloupec, což vám brání provést Vlookup mezi oběma tabulkami. Existuje však jiná tabulka, která neobsahuje hledané informace, ale má jeden společný sloupec s hlavní tabulkou a další společný sloupec s tabulkou vyhledávání.
Situaci ilustruje následující obrázek:
Cílem je zkopírovat ceny do hlavní tabulky na základě ID položek . Problém je v tom, že tabulka obsahující ceny nemá ID položek , což znamená, že budeme muset provést dva Vlookupy v jednom vzorci.
Pro větší pohodlí nejprve vytvoříme několik pojmenovaných rozsahů:
- Vyhledávací tabulka 1 se jmenuje Produkty (D3:E10)
- Vyhledávací tabulka 2 se jmenuje Ceny ( G3:H10 )
Tabulky mohou být ve stejných nebo různých pracovních listech.
A nyní provedeme tzv. double Vlookup , alias vnořený Vlookup .
Nejprve vytvořte vzorec VLOOKUP pro vyhledání názvu produktu v tabulce 1 (s názvem Produkty ) na základě ID položky (A3):
=VLOOKUP(A3, Produkty, 2, FALSE)
Dále vložte výše uvedený vzorec do lookup_value argument další funkce VLOOKUP, která vytáhne ceny z tabulky Lookup 2 (s názvem Ceny ) na základě názvu produktu vráceného vnořeným VLOOKUP:
=VLOOKUP(VLOOKUP(A3, Produkty, 2, FALSE), Ceny, 2, FALSE)
Následující obrázek ukazuje náš vnořený vzorec Vlookup v akci:
Jak dynamicky vyhledat více listů
Někdy se může stát, že máte data ve stejném formátu rozdělená do několika listů. A vaším cílem je vytáhnout data z konkrétního listu v závislosti na klíčové hodnotě v dané buňce.
Snadněji to pochopíte na příkladu. Řekněme, že máte několik regionálních přehledů o prodeji ve stejném formátu a chcete získat údaje o prodeji určitého produktu v určitých regionech:
Stejně jako v předchozím příkladu začneme definicí několika jmen:
- Rozsah A2:B5 v listu CA se jmenuje CA_Sales .
- Rozsah A2:B5 v listu FL se jmenuje FL_Sales .
- Rozsah A2:B5 v listu KS se jmenuje KS_Sales .
Jak vidíte, všechny pojmenované rozsahy mají společnou část ( Prodej ) a jedinečné části ( CA , FL , KS ). Nezapomeňte své rozsahy pojmenovat podobným způsobem, protože je to nezbytné pro vzorec, který budeme sestavovat.
Vzorec 1. INDIREKTNÍ VLOOKUP pro dynamické vytahování dat z různých listů
Pokud je vaším úkolem získat data z více listů, je nejlepším řešením vzorec VLOOKUP INDIRECT - je kompaktní a přehledný.
Pro tento příklad uspořádáme souhrnnou tabulku tímto způsobem:
- Do polí A2 a A3 zadejte produkty, které vás zajímají. To jsou naše vyhledávací hodnoty.
- Zadejte jedinečné části pojmenovaných rozsahů v B1, C1 a D1.
Nyní spojíme buňku obsahující jedinečnou část (B1) se společnou částí ("_Sales") a výsledný řetězec vložíme do INDIRECT:
INDIRECT(B$1&"_Sales")
Funkce INDIRECT převede řetězec na název, kterému Excel rozumí, a vy jej vložíte do pole table_array argument VLOOKUP:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
Výše uvedený vzorec přejde na B2 a pak jej zkopírujete dolů a doprava.
Věnujte prosím pozornost tomu, že v hodnotě vyhledávání ($A2) jsme uzamkli souřadnici sloupce pomocí absolutního odkazu na buňku, aby sloupec zůstal při kopírování vzorce doprava pevný. V odkazu B$1 jsme uzamkli řádek, protože chceme, aby se souřadnice sloupce změnila a dodala příslušnou část názvu INDIRECT v závislosti na sloupci, do kterého je vzorec kopírován:
Pokud je vaše hlavní tabulka uspořádána jinak, vyhledávací hodnoty v řádku a jedinečné části názvů rozsahů ve sloupci, pak byste měli uzamknout souřadnici řádku v vyhledávací hodnotě (B$1) a souřadnici sloupce v částech názvu ($A2):
=VLOOKUP(B$1, INDIRECT($A2&"_Sales"), 2, FALSE)
Vzorec 2. VLOOKUP a vnořené IF pro vyhledávání více listů
V situaci, kdy máte k dispozici pouze dva nebo tři listy pro vyhledávání, můžete použít poměrně jednoduchý vzorec VLOOKUP s vnořenými funkcemi IF pro výběr správného listu na základě klíčové hodnoty v konkrétní buňce:
=VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,"")), 2, FALSE)
Kde $A2 je hodnota vyhledávání (název položky) a B$1 je hodnota klíče (stav):
V tomto případě nemusíte nutně definovat názvy a můžete použít externí odkazy pro odkaz na jiný list nebo sešit.
Další příklady vzorců naleznete v části Jak provádět VLOOKUP na více listech v aplikaci Excel.
To je návod, jak používat VLOOKUP v Excelu. Děkuji vám za přečtení a doufám, že se příští týden uvidíme na našem blogu!
Cvičebnice ke stažení
Příklady pokročilých vzorců VLOOKUP (.xlsx soubor)