Pokročilý VLOOKUP v aplikaci Excel: vícenásobný, dvojitý, vnořený

  • Sdílet Toto
Michael Brown

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:

    1. 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.
    2. 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)

    Michael Brown je oddaný technologický nadšenec s vášní pro zjednodušování složitých procesů pomocí softwarových nástrojů. S více než desetiletými zkušenostmi v technologickém průmyslu zdokonalil své dovednosti v aplikacích Microsoft Excel a Outlook a také v Tabulkách a Dokumentech Google. Michaelův blog je věnován sdílení jeho znalostí a odborných znalostí s ostatními a poskytuje snadno pochopitelné tipy a návody pro zlepšení produktivity a efektivity. Ať už jste zkušený profesionál nebo začátečník, Michaelův blog nabízí cenné postřehy a praktické rady, jak tyto základní softwarové nástroje co nejlépe využít.