Pokročilý VLOOKUP v programe Excel: viacnásobný, dvojitý, vnorený

  • Zdieľajte To
Michael Brown

Tieto príklady vás naučia, ako vyhľadávať viacero kritérií, vrátiť konkrétny prípad alebo všetky zhody, vykonávať dynamické vyhľadávanie vo viacerých hárkoch a ďalšie.

Je to druhá časť seriálu, ktorá vám pomôže využiť silu funkcie VLOOKUP programu Excel. Príklady predpokladajú, že viete, ako táto funkcia funguje. Ak nie, je rozumné začať so základnými spôsobmi použitia funkcie VLOOKUP v programe Excel.

Skôr ako sa posunieme ďalej, dovoľte mi, aby som vám v krátkosti pripomenul syntax:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

Teraz, keď sú všetci na rovnakej strane, sa bližšie pozrime na príklady pokročilých vzorcov VLOOKUP:

    Ako vyhľadať viacero kritérií

    Funkcia VLOOKUP aplikácie Excel je naozaj užitočná, keď je potrebné vyhľadať v databáze určitú hodnotu. Chýba jej však dôležitá vlastnosť - jej syntax umožňuje vyhľadať len jednu hodnotu. Čo však v prípade, že chcete vyhľadať s viacerými podmienkami? Na výber máte niekoľko rôznych riešení.

    Vzorec 1. VLOOKUP s dvoma kritériami

    Predpokladajme, že máte zoznam objednávok a chcete zistiť množstvo na základe 2 kritérií, Názov zákazníka a Produkt Komplikujúcim faktorom je, že každý zákazník si objednal viacero výrobkov, ako je uvedené v tabuľke nižšie:

    Bežný vzorec VLOOKUP v tejto situácii nebude fungovať, pretože vracia prvú nájdenú zhodu na základe jedinej zadanej hodnoty vyhľadávania.

    Aby ste to prekonali, môžete pridať pomocný stĺpec a spojiť hodnoty z dvoch vyhľadávacích stĺpcov ( Zákazník a Produkt ). Je dôležité, aby pomocný stĺpec bol úplne vľavo stĺpec v poli tabuľky, pretože v ňom Excel VLOOKUP vždy hľadá hodnotu vyhľadávania.

    Pridajte teda do ľavej časti tabuľky stĺpec a skopírujte doň nasledujúci vzorec. Tým sa pomocný stĺpec naplní hodnotami zo stĺpcov B a C (znak medzery je medzi nimi kvôli lepšej čitateľnosti spojený):

    =B2&" "&C2

    A potom použite štandardný vzorec VLOOKUP a umiestnite obe kritériá do lookup_value oddelené medzerou:

    =VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)

    Alebo zadajte kritériá do samostatných buniek (v našom prípade G1 a G2) a tieto bunky spojte:

    =VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)

    Keďže chceme vrátiť hodnotu zo stĺpca D, ktorý je štvrtý v tabuľkovom poli, použijeme 4 pre col_index_num . range_lookup argument je nastavený na FALSE, aby Vlookup presne zodpovedal. Výsledok je zobrazený na nasledujúcom obrázku:

    V prípade, že je vaša vyhľadávacia tabuľka v ďalší list , uveďte názov hárku do vzorca VLOOKUP. Napríklad:

    =VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)

    Prípadne vytvorte pomenovaný rozsah pre vyhľadávaciu tabuľku (napr, Objednávky ), aby bol vzorec ľahšie čitateľný:

    =VLOOKUP(G1&" "&G2, Objednávky, 4, FALSE)

    Ďalšie informácie nájdete v časti Ako vyhľadávať z iného hárka v programe Excel.

    Poznámka: Aby vzorec fungoval správne, hodnoty v pomocnom stĺpci by sa mali spájať presne takým istým spôsobom ako v lookup_value Napríklad sme použili znak medzery na oddelenie kritérií v pomocnom stĺpci (B2&" "&C2) aj vo vzorci VLOOKUP (G1&" "&G2).

    Vzorec 2. Excel VLOOKUP s viacerými podmienkami

    Teoreticky môžete použiť vyššie uvedený prístup na vyhľadávanie viac ako dvoch kritérií. Existuje však niekoľko upozornení. Po prvé, hodnota vyhľadávania je obmedzená na 255 znakov a po druhé, návrh pracovného hárka nemusí umožniť pridanie pomocného stĺpca.

    Našťastie Microsoft Excel často poskytuje viac ako jeden spôsob, ako urobiť tú istú vec. Ak chcete Vlookup použiť na viacero kritérií, môžete použiť buď kombináciu INDEX MATCH, alebo funkciu XLOOKUP, ktorá bola nedávno predstavená v Office 365.

    Napríklad na vyhľadávanie na základe 3 rôznych hodnôt ( Dátum , Názov zákazníka a Produkt ), použite jeden z nasledujúcich vzorcov:

    =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 (dátum)
    • G2 je kritérium 2 (meno zákazníka)
    • G3 je kritérium 3 (výrobok)
    • A2:A11 je rozsah vyhľadávania 1 (dátumy)
    • B2:B11 je rozsah vyhľadávania 2 (mená zákazníkov)
    • C2:C11 je rozsah vyhľadávania 3 (produkty)
    • D2:D11 je rozsah vrátenia (množstvo)

    Poznámka: Vo všetkých verziách okrem Excelu 365 sa INDEX MATCH zadáva ako vzorec CSE poľa stlačením klávesovej skratky Ctrl + Shift + Enter. V Exceli 365, ktorý podporuje dynamické polia, funguje aj ako bežný vzorec.

    Podrobné vysvetlenie vzorcov nájdete na:

    • XLOOKUP s viacerými kritériami
    • Vzorec INDEX MATCH s viacerými kritériami

    Ako použiť VLOOKUP na získanie 2., 3. alebo n-tej zhody

    Ako už viete, Excel VLOOKUP dokáže získať len jednu zhodu, presnejšie, vráti prvú nájdenú zhodu. Ale čo ak je vo vašom vyhľadávacom poli viacero zhod a vy chcete získať 2. alebo 3. inštanciu? Táto úloha znie dosť zložito, ale riešenie existuje!

    Vzorec 1. Vlookup N-tý prípad

    Predpokladajme, že v jednom stĺpci máte mená zákazníkov, v druhom stĺpci sú produkty, ktoré si zakúpili, a hľadáte druhý alebo tretí produkt, ktorý si daný zákazník kúpil.

    Najjednoduchším spôsobom je pridať pomocný stĺpec na ľavú stranu tabuľky, ako sme to urobili v prvom príklade. Tentoraz ho však naplníme menami zákazníkov a číslami výskytov ako " John Doe1 ", " John Doe2 " atď.

    Ak chcete získať výskyt, použite funkciu COUNTIF so zmiešaným odkazom na rozsah (prvý odkaz je absolútny a druhý relatívny, napríklad $B$2:B2). Keďže relatívny odkaz sa mení na základe pozície bunky, do ktorej sa vzorec kopíruje, v riadku 3 sa stane $B$2:B3, v riadku 4 - $B$2:B4 atď.

    Po spojení s názvom zákazníka (B2) má vzorec tento tvar:

    =B2&COUNTIF($B$2:B2, B2)

    Vyššie uvedený vzorec sa vloží do A2 a potom ho skopírujete do toľkých buniek, koľko potrebujete.

    Potom zadajte cieľový názov a číslo výskytu do samostatných buniek (F1 a F2) a pomocou nižšie uvedeného vzorca vyhľadajte konkrétny výskyt:

    =VLOOKUP(F1&F2, A2:C11, 3, FALSE)

    Vzorec 2. Vlookup 2. výskyt

    Ak hľadáte 2. inštanciu hodnoty vyhľadávania, potom sa môžete zaobísť bez pomocného stĺpca. Namiesto toho vytvorte pole tabuľky dynamicky pomocou funkcie INDIRECT spolu s funkciou MATCH:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)

    Kde:

    • E1 je vyhľadávacia hodnota
    • A2:A11 je rozsah vyhľadávania
    • B11 je posledná (pravá dolná) bunka vyhľadávacej tabuľky

    Upozorňujeme, že uvedený vzorec je napísaný pre konkrétny prípad, keď bunky s údajmi vo vyhľadávacej tabuľke začínajú v riadku 2. Ak sa vaša tabuľka nachádza niekde v strede hárka, použite tento univerzálny vzorec, kde A1 je ľavá horná bunka vyhľadávacej tabuľky obsahujúca hlavičku stĺpca:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE)

    Ako tento vzorec funguje

    Tu je kľúčová časť vzorca, ktorá vytvára dynamický rozsah vlookup :

    INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")

    Funkcia MATCH nakonfigurovaná na presnú zhodu (0 v poslednom argumente) porovnáva cieľové meno (E1) so zoznamom mien (A2:A11) a vracia pozíciu prvej nájdenej zhody, čo je v našom prípade 3. Toto číslo sa použije ako počiatočná súradnica riadku pre rozsah vlookup, takže k nemu pripočítame 2 (+1 na vylúčenie prvého prípadu a +1 na vylúčenie riadku 1 so záhlaviami stĺpcov).Prípadne môžete na automatický výpočet potrebnej úpravy na základe pozície riadku záhlavia (v našom prípade A1) použiť položku 1+ROW(A1).

    Výsledkom je nasledujúci textový reťazec, ktorý INDIRECT konvertuje na odkaz na rozsah:

    INDIRECT("A"&5&":B11") -> A5:B11

    Tento rozsah siaha do table_array argument VLOOKUP, ktorý ho núti začať vyhľadávať v riadku 5, pričom vynechá prvý prípad hodnoty vyhľadávania:

    VLOOKUP(E1, A5:B11, 2, FALSE)

    Ako vyhľadávať a vracať viacero hodnôt v programe Excel

    Funkcia Excel VLOOKUP je navrhnutá tak, aby vrátila len jednu zhodu. Existuje spôsob, ako VLOOKUP použiť vo viacerých prípadoch? Áno, existuje, aj keď nie je jednoduchý. Vyžaduje si to kombinované použitie niekoľkých funkcií, ako napríklad INDEX, SMALL a ROW je vzorec poľa.

    Napríklad nižšie uvedený postup môže nájsť všetky výskyty vyhľadávacej hodnoty F2 v rozsahu B2:B16 a vrátiť viacero zhody zo stĺpca C:

    {=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}

    Vzorec môžete do pracovného hárku zadať dvoma spôsobmi:

    1. Zadajte vzorec do prvej bunky, stlačte klávesovú skratku Ctrl + Shift + Enter a potom ho pretiahnite do niekoľkých ďalších buniek.
    2. Vyberte niekoľko susedných buniek v jednom stĺpci (F1:F11 na obrázku nižšie), zadajte vzorec a stlačte klávesovú skratku Ctrl + Shift + Enter, aby ste ho dokončili.

    V každom prípade by mal byť počet buniek, do ktorých zadávate vzorec, rovnaký alebo väčší ako maximálny počet možných zhody.

    Podrobné vysvetlenie logiky vzorca a ďalšie príklady nájdete v časti Ako VLOOKUP viac hodnôt v programe Excel.

    Ako vyhľadávať v riadkoch a stĺpcoch (obojsmerné vyhľadávanie)

    Obojsmerné vyhľadávanie (alias vyhľadávanie matíc alebo 2-rozmerné vyhľadávanie ) je módny výraz pre vyhľadávanie hodnoty v priesečníku určitého riadku a stĺpca. V programe Excel existuje niekoľko rôznych spôsobov, ako vykonávať dvojrozmerné vyhľadávanie, ale keďže sa tento návod zameriava na funkciu VLOOKUP, budeme ju prirodzene používať.

    V tomto príklade vezmeme nižšie uvedenú tabuľku s mesačnými predajmi a vytvoríme vzorec VLOOKUP na získanie údajov o predaji konkrétnej položky v danom mesiaci.

    S názvami položiek v A2:A9, názvami mesiacov v B1:F1, cieľovou položkou v I1 a cieľovým mesiacom v I2 je vzorec nasledovný:

    =VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)

    Ako tento vzorec funguje

    Jadrom vzorca je štandardná funkcia VLOOKUP, ktorá hľadá presnú zhodu s hodnotou vyhľadávania v I1. Keďže však nevieme, v ktorom stĺpci sa presne nachádzajú tržby za konkrétny mesiac, nemôžeme číslo stĺpca zadať priamo funkcii col_index_num Na vyhľadanie tohto stĺpca použijeme nasledujúcu funkciu MATCH:

    MATCH(I2, A1:F1, 0)

    Preložené do slovenčiny, vzorec hovorí: vyhľadaj hodnotu I2 v A1:F1 a vráť jej relatívnu pozíciu v poli. Zadaním 0 do 3. argumentu dáte MATCH pokyn, aby našiel hodnotu presne rovnú vyhľadávanej hodnote (je to ako použiť FALSE pre range_lookup argument VLOOKUP).

    Keďže Mar sa nachádza v 4. stĺpci vyhľadávacieho poľa, funkcia MATCH vráti 4, čo sa prenesie priamo do col_index_num argument VLOOKUP:

    VLOOKUP(I1, A2:F9, 4, FALSE)

    Upozorňujeme, že hoci názvy mesiacov začínajú v stĺpci B, pre vyhľadávacie pole používame A1:I1. Robí sa to preto, aby číslo vrátené funkciou MATCH zodpovedalo pozícii stĺpca v table_array VLOOKUP.

    Ak sa chcete dozvedieť ďalšie spôsoby vykonávania maticového vyhľadávania v programe Excel, pozrite si INDEX MATCH MATCH a ďalšie vzorce pre dvojrozmerné vyhľadávanie.

    Ako vykonať viacnásobný Vlookup v programe Excel (vnorený Vlookup)

    Niekedy sa môže stať, že hlavná tabuľka a vyhľadávacia tabuľka nemajú ani jeden spoločný stĺpec, čo vám bráni vykonať Vlookup medzi dvoma tabuľkami. Existuje však iná tabuľka, ktorá neobsahuje hľadané informácie, ale má jeden spoločný stĺpec s hlavnou tabuľkou a ďalší spoločný stĺpec s vyhľadávacou tabuľkou.

    Na nasledujúcom obrázku je znázornená situácia:

    Cieľom je skopírovať ceny do hlavnej tabuľky na základe ID položky Problémom je, že tabuľka s cenami nemá Identifikátory položky , čo znamená, že v jednom vzorci budeme musieť vykonať dva Vlookupy.

    Kvôli pohodliu najskôr vytvoríme niekoľko pomenovaných rozsahov:

    • Vyhľadávacia tabuľka 1 má názov Produkty (D3:E10)
    • Vyhľadávacia tabuľka 2 má názov Ceny ( G3:H10 )

    Tabuľky môžu byť v rovnakých alebo rôznych pracovných listoch.

    A teraz vykonáme tzv. dvojitý Vlookup , alias vnorený Vlookup .

    Najprv vytvorte vzorec VLOOKUP na vyhľadanie názvu produktu v tabuľke 1 (s názvom Produkty ) na základe identifikátora položky (A3):

    =VLOOKUP(A3, Produkty, 2, FALSE)

    Potom vložte vyššie uvedený vzorec do lookup_value argument ďalšej funkcie VLOOKUP na vytiahnutie cien z tabuľky 2 (s názvom Ceny ) na základe názvu produktu vráteného vnoreným VLOOKUP:

    =VLOOKUP(VLOOKUP(A3, Produkty, 2, FALSE), Ceny, 2, FALSE)

    Na nasledujúcom obrázku je zobrazený náš vnorený vzorec Vlookup v akcii:

    Ako dynamicky vyhľadávať viacero hárkov

    Niekedy môžete mať údaje v rovnakom formáte rozdelené do viacerých pracovných hárkov. A vaším cieľom je vytiahnuť údaje z konkrétneho hárku v závislosti od kľúčovej hodnoty v danej bunke.

    Možno to ľahšie pochopíte na príklade. Povedzme, že máte niekoľko regionálnych prehľadov o predaji v rovnakom formáte a chcete získať údaje o predaji konkrétneho výrobku v určitých regiónoch:

    Podobne ako v predchádzajúcom príklade začneme definovaním niekoľkých názvov:

    • Rozsah A2:B5 v hárku CA je pomenovaný CA_Sales .
    • Rozsah A2:B5 v hárku FL je pomenovaný FL_Sales .
    • Rozsah A2:B5 v hárku KS je pomenovaný KS_Sales .

    Ako vidíte, všetky pomenované rozsahy majú spoločnú časť ( Predaj ) a jedinečné časti ( CA , FL , KS ). Nezabudnite svoje rozsahy pomenovať podobným spôsobom, pretože je to nevyhnutné pre vzorec, ktorý budeme vytvárať.

    Vzorec 1. INDIRECT VLOOKUP na dynamické vyťahovanie údajov z rôznych hárkov

    Ak je vašou úlohou získať údaje z viacerých hárkov, vzorec VLOOKUP INDIRECT je najlepším riešením - je kompaktný a zrozumiteľný.

    V tomto príklade usporiadame súhrnnú tabuľku týmto spôsobom:

    • Do A2 a A3 zadajte produkty, ktoré vás zaujímajú. To sú naše vyhľadávacie hodnoty.
    • Zadajte jedinečné časti pomenovaných rozsahov v B1, C1 a D1.

    A teraz spojíme bunku obsahujúcu jedinečnú časť (B1) so spoločnou časťou ("_Sales") a výsledný reťazec vložíme do INDIRECT:

    INDIRECT(B$1&"_Sales")

    Funkcia INDIRECT transformuje reťazec na názov, ktorému Excel rozumie, a vy ho vložíte do table_array argument VLOOKUP:

    =VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)

    Vyššie uvedený vzorec sa prenesie na B2 a potom ho skopírujete nadol a doprava.

    Venujte pozornosť tomu, že v hľadanej hodnote ($A2) sme súradnicu stĺpca uzamkli absolútnym odkazom na bunku, aby stĺpec zostal pri kopírovaní vzorca vpravo nemenný. V odkaze B$1 sme riadok uzamkli, pretože chceme, aby sa súradnica stĺpca zmenila a dodala príslušnú časť názvu INDIRECT v závislosti od stĺpca, do ktorého sa vzorec kopíruje:

    Ak je vaša hlavná tabuľka usporiadaná inak, vyhľadávacie hodnoty v riadku a jedinečné časti názvov rozsahov v stĺpci, potom by ste mali uzamknúť súradnicu riadku v vyhľadávacej hodnote (B$1) a súradnicu stĺpca v častiach názvu ($A2):

    =VLOOKUP(B$1, INDIRECT($A2&"_Sales"), 2, FALSE)

    Vzorec 2. VLOOKUP a vnorené IF na vyhľadávanie viacerých hárkov

    V situácii, keď máte len dva alebo tri vyhľadávacie hárky, môžete použiť pomerne jednoduchý vzorec VLOOKUP s vnorenými funkciami IF na výber správneho hárku na základe kľúčovej hodnoty v konkrétnej bunke:

    =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 vyhľadávania (názov položky) a B$1 je hodnota kľúča (stav):

    V tomto prípade nemusíte nevyhnutne definovať názvy a môžete použiť externé odkazy na odkaz na iný hárok alebo zošit.

    Ďalšie príklady vzorcov nájdete v časti Ako VLOOKUP na viacerých listoch v programe Excel.

    Takto sa používa VLOOKUP v programe Excel. Ďakujem vám za prečítanie a dúfam, že sa uvidíme na našom blogu budúci týždeň!

    Cvičebnica na stiahnutie

    Príklady pokročilých vzorcov VLOOKUP (.xlsx súbor)

    Michael Brown je nadšený technologický nadšenec s vášňou pre zjednodušovanie zložitých procesov pomocou softvérových nástrojov. S viac ako desaťročnými skúsenosťami v technologickom priemysle si zdokonalil svoje zručnosti v programoch Microsoft Excel a Outlook, ako aj Tabuľky Google a Dokumenty. Michaelov blog je venovaný zdieľaniu svojich vedomostí a odborných znalostí s ostatnými a poskytuje jednoduché tipy a návody na zlepšenie produktivity a efektivity. Či už ste skúsený profesionál alebo začiatočník, Michaelov blog ponúka cenné poznatky a praktické rady, ako z týchto základných softvérových nástrojov vyťažiť maximum.