Jak vytvořit závislý (kaskádový) rozevírací seznam v aplikaci Excel

  • Sdílet Toto
Michael Brown

Před časem jsme začali zkoumat možnosti aplikace Excel Ověřování dat a naučili jsme se, jak v aplikaci Excel vytvořit jednoduchý rozevírací seznam na základě seznamu odděleného čárkou, rozsahu buněk nebo pojmenovaného rozsahu.

Dnes tuto funkci prozkoumáme do hloubky a naučíme se vytvářet kaskádové rozbalovací seznamy, které zobrazují volby v závislosti na hodnotě vybrané v prvním rozbalovacím seznamu. Jinak řečeno, vytvoříme seznam pro ověření dat v aplikaci Excel na základě hodnoty jiného seznamu.

    Jak vytvořit více závislých rozbalovacích nabídek v aplikaci Excel

    Vytvoření víceúrovňových závislých rozevíracích seznamů v aplikaci Excel je snadné. Potřebujete pouze několik pojmenovaných rozsahů a vzorec INDIRECT. Tato metoda funguje ve všech verzích aplikace Excel 365 - 2010 a starších.

    1. Zadejte položky pro rozevírací seznamy

    Nejprve zadejte položky, které chcete zobrazit v rozevíracích seznamech, každý seznam v samostatném sloupci. Například vytvářím kaskádové rozevírací seznamy vývozců ovoce a sloupec A mého zdrojového listu ( Ovoce ) obsahuje položky prvního rozbalovacího seznamu a 3 další sloupce obsahují položky závislých rozbalovacích seznamů.

    2. Vytvoření pojmenovaných rozsahů

    Nyní je třeba vytvořit názvy pro hlavní seznam a pro jednotlivé závislé seznamy. To můžete provést buď přidáním nového názvu do pole Jméno manažera okno ( Vzorce karta> Název Správce> Nový) nebo zadáním názvu přímo do Box se jménem .

    Pozor, pokud je první řádek jakýmsi záhlavím sloupce, jak vidíte na obrázku výše, nesmíte jej zahrnout do pojmenovaného rozsahu.

    Podrobné pokyny krok za krokem naleznete v části Jak definovat název v aplikaci Excel.

    Nezapomeňte:

    1. Položky, které se mají zobrazit v prvním rozevíracím seznamu, musí být jednoslovné, např. Meruňka , Mango , Pomeranče . Pokud máte položky složené ze dvou, tří nebo více slov, přečtěte si článek Jak vytvořit kaskádové rozbalovací okno s víceslovnými položkami.
    2. Názvy závislých seznamů musí být přesně stejné jako odpovídající položka v hlavním seznamu. Například závislý seznam, který se zobrazí, když " Mango " je vybrána z prvního rozevíracího seznamu, by se měla jmenovat Mango .

    Po dokončení můžete stisknutím klávesové zkratky Ctrl+F3 otevřít stránku Jméno manažera a zkontrolujte, zda jsou ve všech seznamech uvedeny správné názvy a odkazy.

    3. Vytvořte první (hlavní) rozevírací seznam

    1. Ve stejné nebo jiné tabulce vyberte buňku nebo několik buněk, ve kterých se má zobrazit primární rozevírací seznam.
    2. Přejděte na Data klikněte na kartu Ověřování dat a nastavit rozevírací seznam založený na pojmenovaném rozsahu obvyklým způsobem výběrem možnosti Seznam pod Povolit a zadáním názvu rozsahu do pole Zdroj: box.

    Podrobný postup naleznete v části Vytvoření rozevíracího seznamu na základě pojmenovaného rozsahu.

    Výsledkem bude rozbalovací nabídka v pracovním listu podobná této:

    4. Vytvořte závislý rozevírací seznam

    Vyberte buňku (buňky) pro závislou rozbalovací nabídku a znovu použijte aplikaci Ověřování dat aplikace Excel, jak je popsáno v předchozím kroku. Tentokrát však místo názvu rozsahu zadejte do pole následující vzorec Zdroj: pole:

    =INDIRECT(A2)

    Kde A2 je buňka s prvním (primárním) rozevíracím seznamem.

    Pokud je buňka A2 momentálně prázdná, zobrazí se chybové hlášení " Zdroj je v současné době vyhodnocen jako chyba. Chcete pokračovat? "

    Bezpečně klikněte Ano , a jakmile vyberete položku z první rozevírací nabídky, zobrazí se položky, které jí odpovídají, v druhém, závislém rozevíracím seznamu.

    5. Přidejte třetí závislý rozevírací seznam (nepovinné)

    V případě potřeby můžete přidat třetí kaskádový rozevírací seznam, který závisí buď na výběru ve druhé rozevírací nabídce, nebo na výběru v prvních dvou rozevíracích nabídkách.

    Nastavení 3. rozbalovacího seznamu, který závisí na 2. seznamu

    Rozbalovací seznam tohoto typu můžete vytvořit stejným způsobem, jakým jsme právě vytvořili druhé závislé rozbalovací menu. Jen nezapomeňte na 2 důležité věci, o kterých jsme hovořili výše a které jsou nezbytné pro správnou funkci vašich kaskádových rozbalovacích seznamů.

    Chcete-li například zobrazit seznam regionů ve sloupci C v závislosti na tom, která země je vybrána ve sloupci B, vytvořte pro každou zemi seznam regionů a pojmenujte jej podle názvu země, přesně tak, jak se země zobrazuje v druhých rozbalovacích seznamech. Například seznam indických regionů by se měl jmenovat "Indie", seznam čínských regionů "Čína" atd.

    Poté vyberete buňku pro 3. rozbalovací nabídku (v našem případě C2) a použijete aplikaci Excel Data Validation s následujícím vzorcem (B2 je buňka s druhou rozbalovací nabídkou, která obsahuje seznam zemí):

    =INDIRECT(B2)

    Nyní při každém výběru Indie pod seznamem zemí ve sloupci B se ve třetím rozevíracím seznamu zobrazí následující možnosti:

    Poznámka: Zobrazený seznam regionů je pro každou zemi jedinečný, ale nezávisí na výběru v prvním rozevíracím seznamu.

    Vytvoření třetího rozbalovacího seznamu závislého na prvních dvou seznamech

    Pokud potřebujete vytvořit kaskádovou rozbalovací nabídku, která závisí na výběru v prvním i druhém rozbalovacím seznamu, postupujte tímto způsobem:

    1. Vytvořte další sady pojmenovaných rozsahů a pojmenujte je podle kombinací slov v prvních dvou rozbalovacích nabídkách. Mango, pomeranče atd. v 1. seznamu a Indie, Brazílie atd. ve 2. Pak vytvoříte pojmenované rozsahy MangoIndia , MangoBrazil , PomerančeIndie , PomerančeBrazílie , atd. Tyto názvy by neměly obsahovat podtržítka ani žádné další doplňkové znaky.

  • Použijte ověření dat aplikace Excel pomocí vzorce INDIRECT SUBSTITUTE, který spojí názvy položek v prvních dvou sloupcích a odstraní z nich mezery. Například v buňce C2 bude vzorec pro ověření dat následující:
  • =INDIRECT(SUBSTITUTE(A2&B2," ","))

    Kde A2 a B2 obsahují první, resp. druhé rozbalovací pole.

    Výsledkem bude, že se ve vašem 3. rozevíracím seznamu zobrazí oblasti odpovídající Ovoce a Země vybrané v prvních dvou rozevíracích seznamech.

    Jedná se o nejjednodušší způsob vytváření kaskádových rozevíracích polí v aplikaci Excel. Tento způsob má však řadu omezení.

    Omezení tohoto přístupu:

    1. Položky v primárním rozevíracím seznamu musí být jednoslovné. Podívejte se, jak vytvořit kaskádové rozevírací seznamy s víceslovnými položkami.
    2. Tato metoda nebude fungovat, pokud položky v hlavním rozbalovacím seznamu obsahují znaky, které nejsou v názvech rozsahů povoleny, jako je pomlčka (-), ampersand (&) atd. Řešením je vytvoření dynamického kaskádového rozbalovacího seznamu, který toto omezení nemá.
    3. Takto vytvořené rozbalovací seznamy se neaktualizují automaticky, tj. při každém přidání nebo odebrání položek ve zdrojových seznamech budete muset změnit odkazy na pojmenované rozsahy. Chcete-li toto omezení překonat, zkuste vytvořit dynamický kaskádový rozbalovací seznam.

    Vytváření kaskádových rozevíracích seznamů s víceslovnými položkami

    Vzorce INDIRECT, které jsme použili ve výše uvedeném příkladu, mohou pracovat pouze s jednoslovnými položkami. Například vzorec =INDIRECT(A2) nepřímo odkazuje na buňku A2 a zobrazí pojmenovaný rozsah přesně se stejným názvem, jaký je v odkazované buňce. V názvech aplikace Excel však nejsou povoleny mezery, proto tento vzorec nebude fungovat s víceslovnými názvy.

    Řešením je použití funkce INDIRECT v kombinaci s funkcí SUBSTITUTE, jak jsme to udělali při vytváření 3. rozbalovacího seznamu.

    Předpokládejme, že máte Vodní meloun V tomto případě uvedete seznam vývozců melounů jedním slovem bez mezer - Meloun .

    Poté pro druhé rozbalovací okno použijte aplikaci Excel Data Validation s následujícím vzorcem, který odstraní mezery z názvu v buňce A2:

    =PŘÍMÝ(SUBSTITUTE(A2," ",""))

    Jak zabránit změnám v primárním rozevíracím seznamu

    Představte si následující scénář. Váš uživatel provedl výběr ve všech rozevíracích seznamech, pak si to rozmyslel, vrátil se do prvního seznamu a vybral jinou položku. Výsledkem je, že se 1. a 2. výběr neshodují. Abyste tomu zabránili, můžete chtít zablokovat jakékoli změny v prvním rozevíracím seznamu, jakmile je proveden výběr ve druhém seznamu.

    Při vytváření prvního rozbalovacího seznamu použijte speciální vzorec, který zkontroluje, zda je v druhém rozbalovacím seznamu vybrána nějaká položka:

    =IF(B2="", Fruit, INDIRECT("FakeList"))

    Kde B2 obsahuje druhé rozbalovací pole, " Ovoce " je název seznamu, který se zobrazí v první rozevírací nabídce, a " FakeList " je jakékoli neexistující falešné jméno.

    Pokud je nyní ve druhém rozevíracím seznamu vybrána jakákoli položka, nebudou po kliknutí na šipku vedle prvního seznamu k dispozici žádné možnosti.

    Vytváření dynamických kaskádových rozevíracích seznamů v aplikaci Excel

    Hlavní výhodou dynamických rozevíracích seznamů závislých na aplikaci Excel je to, že můžete libovolně upravovat zdrojové seznamy a vaše rozevírací seznamy se budou aktualizovat za chodu. Vytváření dynamických rozevíracích seznamů samozřejmě vyžaduje trochu více času a složitější vzorce, ale domnívám se, že se tato investice vyplatí, protože po nastavení je s takovými rozevíracími seznamy skutečná radost pracovat.

    Jako téměř u všeho v Excelu můžete stejného výsledku dosáhnout několika způsoby. Konkrétně můžete vytvořit dynamický rozbalovací seznam pomocí kombinace funkcí OFFSET, INDIRECT a COUNTA nebo pomocí odolnějšího vzorce INDEX MATCH. Druhý způsob preferuji, protože poskytuje řadu výhod, z nichž nejpodstatnější jsou:

    1. Musíte vytvořit pouze 3 pojmenované rozsahy bez ohledu na to, kolik položek je v hlavním a závislém seznamu.
    2. Vaše seznamy mohou obsahovat víceslovné položky a jakékoli speciální znaky.
    3. Počet záznamů v jednotlivých sloupcích se může lišit.
    4. Na pořadí záznamů nezáleží.
    5. V neposlední řadě je velmi snadné udržovat a upravovat seznamy zdrojů.

    Dobrá, dost teorie, pojďme se věnovat praxi.

    1. Uspořádejte svá zdrojová data do tabulky

    Jako obvykle musíte nejprve zapsat všechny volby pro rozevírací seznamy do pracovního listu. Tentokrát budete muset zdrojová data uložit do tabulky aplikace Excel. Za tímto účelem po zadání dat označte všechny položky a stiskněte klávesy Ctrl + T nebo klikněte na tlačítko Vložte karta> Tabulka . Poté zadejte název tabulky do pole Název tabulky box.

    Nejpohodlnějším a nejviditelnějším přístupem je uložit položky pro první rozbalovací seznam jako záhlaví tabulky a položky pro závislý rozbalovací seznam jako data tabulky. Následující obrázek znázorňuje strukturu mé tabulky s názvem exporters_tbl - názvy ovoce jsou záhlavím tabulky a pod příslušný název ovoce je přidán seznam vyvážejících zemí.

    2. Vytvoření názvů v aplikaci Excel

    Nyní, když jsou zdrojová data připravena, je čas nastavit pojmenované odkazy, které budou dynamicky načítat správný seznam z tabulky.

    2.1. Přidejte název pro řádek záhlaví tabulky (hlavní rozbalovací okno)

    Chcete-li vytvořit nový název odkazující na záhlaví tabulky, vyberte jej a klikněte na tlačítko Vzorce > Jméno manažera > Nový nebo stiskněte klávesy Ctrl + F3 .

    Microsoft Excel použije vestavěný systém odkazů na tabulky k vytvoření názvu tabulky. název_tabulky[#Headers] vzor.

    Dejte mu nějaký výstižný a snadno zapamatovatelný název, např. fruit_list a klikněte na tlačítko OK .

    2.2. Vytvořte název buňky obsahující první rozevírací seznam.

    Vím, že ještě nemáte žádný rozbalovací seznam :) Ale musíte si vybrat buňku, která bude hostit váš první rozbalovací seznam, a vytvořit pro ni název, protože tento název budete muset zahrnout do odkazu na třetí název.

    Například můj první rozevírací seznam se nachází v buňce B1 na listu 2, takže pro něj vytvořím název, něco jednoduchého a srozumitelného, jako například ovoce :

    Tip. Použijte vhodné odkazy na buňky kopírování rozevíracích seznamů v celém pracovním listu.

    Nezapomeňte si prosím pozorně přečíst následujících několik odstavců, protože se jedná o velmi užitečný tip, který si nechcete nechat ujít. Moc děkujeme Karen za jeho zveřejnění!

    Pokud plánujete kopírovat rozevírací seznamy do dalších buněk, použijte při vytváření názvu buňky (buněk) s prvním rozevíracím seznamem smíšené odkazy na buňky.

    Aby se rozevírací seznamy správně kopírovaly do jiných sloupce (tj. vpravo), použijte relativní odkazy na sloupce (bez znaku $) a absolutní odkazy na řádky (se znakem $), například = Sheet2!B$1.

    Výsledkem je, že závislý rozevírací seznam B1 se zobrazí v buňce B2, závislý rozevírací seznam C1 se zobrazí v buňce C2 atd.

    A pokud plánujete zkopírovat rozbalovací nabídky do jiných aplikací. řádky (tj. dolů po sloupci), pak použijte absolutní souřadnice sloupce (s $) a relativní souřadnice řádku (bez $), například = Sheet2!$B1.

    Chcete-li zkopírovat rozevírací buňku v libovolném směru, použijte relativní odkaz (bez znaku $), například = List2!B1.

    2.3. Vytvoření názvu pro načtení položek závislé nabídky

    Místo toho, abychom pro každý ze závislých seznamů nastavili jedinečné názvy, jak jsme to udělali v předchozím příkladu, vytvoříme jeden. pojmenovaný vzorec který není přiřazen žádné konkrétní buňce ani rozsahu buněk. Získá správný seznam položek pro druhý rozevírací seznam v závislosti na výběru v prvním rozevíracím seznamu. Hlavní výhodou použití tohoto vzorce je, že nebudete muset vytvářet nové názvy, když budete přidávat nové položky do prvního rozevíracího seznamu - jeden pojmenovaný vzorec se vztahuje na všechny.

    Tímto vzorcem vytvoříte nový název aplikace Excel:

    =INDEX(exporters_tbl,,MATCH(fruit,fruit_list,0))

    Kde:

    • exporters_tbl - název tabulky (vytvořené v kroku 1);
    • ovoce - název buňky obsahující první rozevírací seznam (vytvořený v kroku 2.2);
    • fruit_list - název odkazující na řádek záhlaví tabulky (vytvořený v kroku 2.1).

    Dala jsem mu jméno exporters_list , jak vidíte na obrázku níže.

    Hlavní část práce jste již udělali! Než přejdete k poslednímu kroku, bylo by dobré otevřít Správce názvů ( Ctrl + F3 ) a ověřit názvy a odkazy:

    3. Nastavení ověřování dat aplikace Excel

    Toto je vlastně nejjednodušší část. Když máte dva pojmenované vzorce, nastavíte Ověřování dat obvyklým způsobem ( Data karta> Ověřování dat ).

    • V prvním rozevíracím seznamu zadejte do pole Zdroj následující údaje. =fruit_list (název vytvořený v kroku 2.1).
    • Do rozevíracího seznamu závislých položek zadejte =exporters_list (název vytvořený v kroku 2.3).

    Hotovo! Vaše dynamická kaskádová rozbalovací nabídka je hotová a bude se automaticky aktualizovat podle změn, které jste provedli ve zdrojové tabulce.

    Toto dynamické rozbalovací menu Excelu, které je ve všech ostatních ohledech dokonalé, má jeden nedostatek - pokud sloupce zdrojové tabulky obsahují jiný počet položek, v nabídce se takto objeví prázdné řádky:

    Vyloučení prázdných řádků z dynamického kaskádového rozbalovacího seznamu

    Pokud chcete vyčistit všechny prázdné řádky v rozevíracích polích, budete muset udělat další krok a vylepšit vzorec INDEX / MATCH použitý k vytvoření závislého dynamického rozevíracího seznamu.

    Myšlenkou je použití 2 funkcí INDEX, kde první získá levou horní buňku a druhá vrátí pravou dolní buňku rozsahu, nebo funkce OFFSET s vnořeným INDEXEM a COUNTA. Podrobný postup následuje níže:

    1. Vytvořte dvě další jména

    Aby nebyl vzorec příliš objemný, vytvořte nejprve několik pomocných názvů s následujícími jednoduchými vzorci:

    • Jméno zvané col_num odkazovat na vybrané číslo sloupce:

      =MATCH(fruit,fruit_list,0)

    • Jméno zvané whole_col odkazovat na vybraný sloupec (ne na číslo sloupce, ale na celý sloupec):

      =INDEX(exporters_tbl,,col_num)

    Ve výše uvedených vzorcích, exporters_tbl je název vaší zdrojové tabulky, ovoce je název buňky obsahující první rozbalovací seznam a fruit_list je název odkazující na řádek záhlaví tabulky.

    2. Vytvořte pojmenovaný odkaz pro závislé rozbalovací okno

    Poté použijte některý z níže uvedených vzorců a vytvořte nový název (nazvěme ho třeba exporters_list2 ), které se mají použít se závislým rozevíracím seznamem:

    =INDEX(exporters_tbl,1,col_num) : INDEX(exporters_tbl, COUNTA(whole_col), col_num)

    =OFFSET(INDEX(exporters_tbl,1,col_num),0,0,COUNTA(whole_col))

    3. Použijte ověření dat

    Nakonec vyberte buňku obsahující závislý rozbalovací seznam a použijte Ověření dat zadáním = exporters_list2 (název vytvořený v předchozím kroku) v poli Zdroj: box.

    Na obrázku níže je zobrazena výsledná dynamická rozbalovací nabídka v aplikaci Excel, kde zmizely všechny prázdné řádky!

    Poznámka: Při práci s dynamickými kaskádovými rozbalovacími seznamy vytvořenými pomocí výše uvedených vzorců nic nebrání uživateli, aby po provedení výběru v druhé nabídce změnil hodnotu v prvním rozbalovacím seznamu, v důsledku čehož se mohou volby v primárním a sekundárním rozbalovacím seznamu neshodovat. Změny v prvním poli po provedení výběru v druhém poli můžete zablokovat pomocí VBA nebosložité vzorce navržené v tomto výukovém programu.

    Takto vytvoříte seznam pro ověřování dat v aplikaci Excel na základě hodnot jiného seznamu. Neváhejte si stáhnout naše ukázkové sešity, abyste viděli kaskádové rozevírací seznamy v akci. Děkujeme za přečtení!

    Cvičebnice ke stažení

    Kaskádové rozbalovací okno Ukázka 1 - snadná verze

    Kaskádové rozbalovací okno Ukázka 2 - pokročilá verze bez prázdných políček

    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.