Obsah
Pred časom sme začali skúmať možnosti aplikácie Excel Data Validation a naučili sme sa, ako vytvoriť jednoduchý rozbaľovací zoznam v aplikácii Excel na základe zoznamu oddeleného čiarkou, rozsahu buniek alebo pomenovaného rozsahu.
Dnes túto funkciu preskúmame do hĺbky a naučíme sa vytvárať kaskádové rozbaľovacie zoznamy, ktoré zobrazujú možnosti v závislosti od hodnoty vybranej v prvom rozbaľovacom zozname. Inak povedané, vytvoríme zoznam na overovanie údajov v programe Excel na základe hodnoty iného zoznamu.
Ako vytvoriť viacero závislých rozbaľovacích zoznamov v programe Excel
Vytvorenie viacúrovňových závislých rozbaľovacích zoznamov v programe Excel je jednoduché. Potrebujete len niekoľko pomenovaných rozsahov a vzorec INDIRECT. Táto metóda funguje vo všetkých verziách programu Excel 365 - 2010 a starších.
1. Zadajte položky pre rozbaľovacie zoznamy
Najskôr zadajte položky, ktoré chcete zobraziť v rozbaľovacích zoznamoch, každý zoznam v samostatnom stĺpci. Napríklad vytváram kaskádové rozbaľovacie zoznamy vývozcov ovocia a stĺpec A môjho zdrojového listu ( Ovocie ) obsahuje položky prvého rozbaľovacieho zoznamu a 3 ďalšie stĺpce obsahujú položky závislých rozbaľovacích zoznamov.
2. Vytvorenie pomenovaných rozsahov
Teraz je potrebné vytvoriť názvy pre hlavný zoznam a pre každý zo závislých zoznamov. Môžete to urobiť buď pridaním nového názvu do Názov manažéra okno ( Vzorce karta> Názov Manažér> Nový) alebo zadaním názvu priamo do Box s názvom .
Pozor, ak je váš prvý riadok akýmsi záhlavím stĺpca, ako vidíte na obrázku vyššie, nesmiete ho zahrnúť do pomenovaného rozsahu.
Podrobné pokyny krok za krokom nájdete v časti Ako definovať názov v programe Excel.
Čo si treba zapamätať:
- Položky, ktoré sa majú zobraziť v prvom rozbaľovacom zozname, musia byť jednoslovné, napr. Marhuľa , Mango , Pomaranče Ak máte položky pozostávajúce z dvoch, troch alebo viacerých slov, pozrite si časť Ako vytvoriť kaskádové rozbaľovacie okno s viacslovnými položkami.
- Názvy závislých zoznamov musia byť presne rovnaké ako zodpovedajúce položky v hlavnom zozname. Napríklad závislý zoznam, ktorý sa zobrazí, keď " Mango " je vybraný z prvého rozbaľovacieho zoznamu, by mal byť pomenovaný Mango .
Po dokončení môžete stlačiť klávesovú skratku Ctrl+F3, aby ste otvorili Názov manažéra a skontrolujte, či sú vo všetkých zoznamoch správne názvy a odkazy.
3. Vytvorte prvý (hlavný) rozbaľovací zoznam
- V tej istej alebo v inej tabuľke vyberte bunku alebo niekoľko buniek, v ktorých sa má zobraziť váš primárny rozbaľovací zoznam.
- Prejdite na Údaje kliknite na kartu Overovanie údajov a nastaviť rozbaľovací zoznam na základe pomenovaného rozsahu obvyklým spôsobom výberom Zoznam pod Povoľte a zadaním názvu rozsahu do Zdroj box.
Podrobný postup nájdete v časti Vytvorenie rozbaľovacieho zoznamu na základe pomenovaného rozsahu.
Výsledkom bude rozbaľovacia ponuka v pracovnom hárku podobná tejto:
4. Vytvorte závislý rozbaľovací zoznam
Vyberte bunku (bunky) pre závislú rozbaľovaciu ponuku a opäť použite aplikáciu Excel Data Validation, ako je popísané v predchádzajúcom kroku. Tentoraz však namiesto názvu rozsahu zadajte do políčka nasledujúci vzorec Zdroj oblasť:
=INDIRECT(A2)
Kde A2 je bunka s prvým (primárnym) rozbaľovacím zoznamom.
Ak je bunka A2 momentálne prázdna, zobrazí sa chybové hlásenie " Zdroj sa momentálne vyhodnocuje ako chyba. Chcete pokračovať? "
Bezpečne kliknite na Áno a hneď ako vyberiete položku z prvej rozbaľovacej ponuky, zobrazia sa položky, ktoré jej zodpovedajú, v druhom, závislom rozbaľovacom zozname.
5. Pridajte tretí závislý rozbaľovací zoznam (voliteľné)
V prípade potreby môžete pridať tretí kaskádový rozbaľovací zoznam, ktorý závisí buď od výberu v druhej rozbaľovacej ponuke, alebo od výberu v prvých dvoch rozbaľovacích zoznamoch.
Nastavenie 3. rozbaľovacieho zoznamu, ktorý závisí od 2. zoznamu
Rozbaľovací zoznam tohto typu môžete vytvoriť rovnakým spôsobom, ako sme práve vytvorili druhú závislú rozbaľovaciu ponuku. Len nezabudnite na 2 dôležité veci, o ktorých sme hovorili vyššie a ktoré sú nevyhnutné pre správnu prácu vašich kaskádových rozbaľovacích zoznamov.
Ak napríklad chcete zobraziť zoznam regiónov v stĺpci C v závislosti od toho, ktorá krajina je vybraná v stĺpci B, vytvorte zoznam regiónov pre každú krajinu a pomenujte ho podľa názvu krajiny, presne tak, ako sa krajina zobrazuje v druhých rozbaľovacích zoznamoch. Napríklad zoznam indických regiónov by sa mal volať "India", zoznam čínskych regiónov - "Čína" atď.
Potom vyberiete bunku pre 3. rozbaľovaciu ponuku (v našom prípade C2) a použijete Excel Data Validation s nasledujúcim vzorcom (B2 je bunka s druhou rozbaľovacou ponukou, ktorá obsahuje zoznam krajín):
=INDIRECT(B2)
Teraz pri každom výbere India v zozname krajín v stĺpci B sa v treťom rozbaľovacom zozname zobrazia tieto možnosti:
Poznámka: Zobrazený zoznam regiónov je pre každú krajinu jedinečný, ale nezávisí od výberu v prvom rozbaľovacom zozname.
Vytvorenie tretieho rozbaľovacieho zoznamu závislého od prvých dvoch zoznamov
Ak potrebujete vytvoriť kaskádové rozbaľovacie menu, ktoré závisí od výberu v prvom aj druhom rozbaľovacom zozname, postupujte týmto spôsobom:
- Vytvorte ďalšie sady pomenovaných rozsahov a pomenujte ich podľa kombinácií slov v prvých dvoch rozbaľovacích zoznamoch. Mango, pomaranče atď. v 1. zozname a India, Brazília atď. v 2. Potom vytvoríte pomenované rozsahy MangoIndia , MangoBrazil , PomarančeIndia , PomarančeBrazília , atď. Tieto názvy by nemali obsahovať podčiarkovníky ani žiadne ďalšie znaky.
=INDIRECT(SUBSTITUTE(A2&B2," ","")
Kde A2 a B2 obsahujú prvé a druhé rozbaľovacie okno.
Výsledkom je, že v treťom rozbaľovacom zozname sa zobrazia regióny zodpovedajúce Ovocie a Krajina vybrané v prvých 2 rozbaľovacích zoznamoch.
Toto je najjednoduchší spôsob vytvárania kaskádových rozbaľovacích polí v programe Excel. Táto metóda má však niekoľko obmedzení.
Obmedzenia tohto prístupu:
- Položky v primárnom rozbaľovacom zozname musia byť jednoslovné. Pozrite si, ako vytvoriť kaskádové rozbaľovacie zoznamy s viacslovnými položkami.
- Táto metóda nebude fungovať, ak položky v hlavnom rozbaľovacom zozname obsahujú znaky, ktoré nie sú povolené v názvoch rozsahov, napríklad spojovník (-), ampersand (&) atď. Riešením je vytvorenie dynamického kaskádového rozbaľovacieho zoznamu, ktorý nemá toto obmedzenie.
- Takto vytvorené rozbaľovacie zoznamy sa neaktualizujú automaticky, t. j. budete musieť zmeniť odkazy na pomenované rozsahy vždy, keď pridáte alebo odstránite položky v zdrojových zoznamoch. Ak chcete toto obmedzenie prekonať, skúste vytvoriť dynamický kaskádový rozbaľovací zoznam.
Vytváranie kaskádových rozbaľovacích zoznamov s viacslovnými položkami
Vzorce INDIRECT, ktoré sme použili vo vyššie uvedenom príklade, dokážu pracovať len s jednoslovnými položkami. Napríklad vzorec =INDIRECT(A2) nepriamo odkazuje na bunku A2 a zobrazí pomenovaný rozsah presne s rovnakým názvom, aký je v odkazovanej bunke. V názvoch programu Excel však nie sú povolené medzery, preto tento vzorec nebude fungovať s viacslovnými názvami.
Riešením je použitie funkcie INDIRECT v kombinácii s funkciou SUBSTITUTE, ako sme to urobili pri vytváraní 3. rozbaľovacieho zoznamu.
Predpokladajme, že máte Vodný melón V tomto prípade uvediete zoznam vývozcov vodného melónu s jedným slovom bez medzier - Melón .
Potom pre druhé rozbaľovacie okno použite aplikáciu Excel Data Validation s nasledujúcim vzorcom, ktorý odstráni medzery z názvu v bunke A2:
=PRIAMY(SUBSTITUTE(A2," ",""))
Ako zabrániť zmenám v primárnom rozbaľovacom zozname
Predstavte si nasledujúci scenár. Váš používateľ vykonal výbery vo všetkých rozbaľovacích zoznamoch, potom si to rozmyslel, vrátil sa do prvého zoznamu a vybral inú položku. Výsledkom je, že výbery v 1. a 2. zozname sa nezhodujú. Aby ste tomu zabránili, možno budete chcieť zablokovať všetky zmeny v prvom rozbaľovacom zozname hneď po vykonaní výberu v druhom zozname.
Na tento účel použite pri vytváraní prvého rozbaľovacieho zoznamu špeciálny vzorec, ktorý skontroluje, či je v druhom rozbaľovacom zozname vybraná nejaká položka:
=IF(B2="", Fruit, INDIRECT("FakeList"))
Kde B2 obsahuje druhé rozbaľovacie okno, " Ovocie " je názov zoznamu, ktorý sa zobrazí v prvej rozbaľovacej ponuke, a " FakeList " je akékoľvek falošné meno, ktoré neexistuje.
Ak je teraz v druhom rozbaľovacom zozname vybraná nejaká položka, po kliknutí na šípku vedľa prvého zoznamu nebudú k dispozícii žiadne možnosti.
Vytváranie dynamických kaskádových rozbaľovacích zoznamov v programe Excel
Hlavnou výhodou dynamického rozbaľovacieho zoznamu závislého od programu Excel je, že môžete voľne upravovať zdrojové zoznamy a vaše rozbaľovacie polia sa budú aktualizovať priebežne. Samozrejme, vytvorenie dynamických rozbaľovacích zoznamov si vyžaduje trochu viac času a zložitejšie vzorce, ale myslím si, že je to investícia, ktorá sa oplatí, pretože po nastavení je práca s takýmito rozbaľovacími zoznamami skutočným potešením.
Ako takmer pri všetkom v programe Excel, rovnaký výsledok môžete dosiahnuť viacerými spôsobmi. Konkrétne môžete vytvoriť dynamický rozbaľovací zoznam pomocou kombinácie funkcií OFFSET, INDIRECT a COUNTA alebo pomocou odolnejšieho vzorca INDEX MATCH. Druhý spôsob uprednostňujem, pretože poskytuje množstvo výhod, z ktorých najzásadnejšie sú:
- Musíte vytvoriť len 3 pomenované rozsahy bez ohľadu na to, koľko položiek je v hlavnom a závislom zozname.
- Vaše zoznamy môžu obsahovať viacslovné položky a akékoľvek špeciálne znaky.
- Počet položiek v jednotlivých stĺpcoch sa môže líšiť.
- Na poradí záznamov nezáleží.
- Nakoniec je veľmi jednoduché udržiavať a upravovať zoznamy zdrojov.
Dobre, dosť teórie, poďme na prax.
1. Usporiadajte zdrojové údaje do tabuľky
Ako zvyčajne, prvou vecou, ktorú musíte urobiť, je zapísať všetky voľby pre vaše rozbaľovacie zoznamy do pracovného hárka. Tentoraz budete musieť zdrojové údaje uložiť do tabuľky programu Excel. Na tento účel po zadaní údajov vyberte všetky položky a stlačte klávesovú skratku Ctrl + T alebo kliknite na Vložte karta> Tabuľka . Potom zadajte názov tabuľky do poľa Názov tabuľky box.
Najpohodlnejším a vizuálnym prístupom je uložiť položky pre prvé rozbaľovacie okno ako záhlavie tabuľky a položky pre závislé rozbaľovacie okno ako údaje tabuľky. Nasledujúci obrázok znázorňuje štruktúru mojej tabuľky s názvom exporters_tbl - názvy ovocia sú záhlaviami tabuliek a zoznam vyvážajúcich krajín je pridaný pod príslušným názvom ovocia.
2. Vytvorenie názvov v programe Excel
Teraz, keď sú vaše zdrojové údaje pripravené, je čas nastaviť pomenované odkazy, ktoré dynamicky načítajú správny zoznam z vašej tabuľky.
2.1. Pridajte názov pre riadok záhlavia tabuľky (hlavné rozbaľovacie okno)
Ak chcete vytvoriť nový názov, ktorý odkazuje na záhlavie tabuľky, vyberte ho a potom kliknite na tlačidlo Vzorce > Názov manažéra > Nový alebo stlačte klávesovú skratku Ctrl + F3 .
Microsoft Excel použije zabudovaný referenčný systém tabuľky na vytvorenie názvu table_name[#Headers] vzor.
Dajte mu nejaký zmysluplný a ľahko zapamätateľný názov, napr. fruit_list a kliknite na tlačidlo OK .
2.2. Vytvorte názov bunky obsahujúcej prvý rozbaľovací zoznam
Viem, že ešte nemáte žiadnu rozbaľovaciu ponuku :) Ale musíte si vybrať bunku, ktorá bude hostiť vašu prvú rozbaľovaciu ponuku, a teraz vytvoriť názov tejto bunky, pretože tento názov budete musieť zahrnúť do odkazu na tretí názov.
Napríklad moje prvé rozbaľovacie pole sa nachádza v bunke B1 na liste 2, takže preň vytvorím názov, niečo jednoduché a zrozumiteľné, ako napríklad ovocie :
Tip. Použite vhodné odkazy na bunky kopírovanie rozbaľovacích zoznamov na celom pracovnom liste.
Pozorne si prečítajte nasledujúcich niekoľko odsekov, pretože ide o veľmi užitočný tip, ktorý si nechcete nechať ujsť. Za jeho zverejnenie veľmi pekne ďakujeme Karen!
Ak plánujete kopírovať rozbaľovacie zoznamy do ďalších buniek, pri vytváraní názvu bunky (buniek) s prvým rozbaľovacím zoznamom použite zmiešané odkazy na bunky.
Aby sa rozbaľovacie zoznamy správne kopírovali do iných stĺpce (t. j. doprava), použite relatívne odkazy na stĺpce (bez znaku $) a absolútne odkazy na riadky (so znakom $), napríklad = Sheet2!B$1.
Výsledkom je, že závislý rozbaľovací zoznam B1 sa zobrazí v bunke B2; závislý rozbaľovací zoznam C1 sa zobrazí v bunke C2 atď.
A ak plánujete kopírovať rozbaľovacie ponuky do iných riadky (t. j. dole v stĺpci), potom použite absolútne súradnice stĺpcov (s $) a relatívne súradnice riadkov (bez $), napríklad = Sheet2!$B1.
Ak chcete skopírovať rozbaľovaciu bunku v ľubovoľnom smere, použite relatívny odkaz (bez znaku $), napríklad = Sheet2!B1.
2.3. Vytvorenie názvu na načítanie položiek závislej ponuky
Namiesto nastavenia jedinečných názvov pre každý zo závislých zoznamov, ako sme to urobili v predchádzajúcom príklade, vytvoríme jeden pomenovaný vzorec ktorý nie je priradený k žiadnej konkrétnej bunke alebo rozsahu buniek. Získa správny zoznam položiek pre druhý rozbaľovací zoznam v závislosti od výberu v prvom rozbaľovacom zozname. Hlavnou výhodou použitia tohto vzorca je, že nebudete musieť vytvárať nové názvy, keď budete pridávať nové položky do prvého rozbaľovacieho zoznamu - jeden pomenovaný vzorec sa vzťahuje na všetky.
Pomocou tohto vzorca vytvoríte nový názov programu Excel:
=INDEX(exporters_tbl,,MATCH(fruit,fruit_list,0))
Kde:
exporters_tbl
- názov tabuľky (vytvorenej v kroku 1);ovocie
- názov bunky obsahujúcej prvý rozbaľovací zoznam (vytvorený v kroku 2.2);fruit_list
- názov odkazujúci na riadok záhlavia tabuľky (vytvorený v kroku 2.1).
Dal som mu meno exporters_list , ako vidíte na snímke obrazovky nižšie.
No, väčšiu časť práce ste už urobili! Skôr ako prejdete k poslednému kroku, možno by bolo dobré otvoriť Správcu názvov ( Ctrl + F3 ) a overiť názvy a odkazy:
3. Nastavenie overovania údajov programu Excel
Toto je vlastne tá najjednoduchšia časť. Po vytvorení dvoch pomenovaných vzorcov nastavíte overovanie údajov obvyklým spôsobom ( Údaje karta> Overovanie údajov ).
- V prvom rozbaľovacom zozname zadajte do poľa Zdroj =fruit_list (názov vytvorený v kroku 2.1).
- Do rozbaľovacieho zoznamu závislých položiek zadajte =exporters_list (názov vytvorený v kroku 2.3).
Hotovo! Vaša dynamická kaskádová rozbaľovacia ponuka je hotová a bude sa automaticky aktualizovať podľa zmien, ktoré ste vykonali v zdrojovej tabuľke.
Toto dynamické rozbaľovacie okno Excelu, ktoré je vo všetkých ostatných ohľadoch dokonalé, má jeden nedostatok - ak stĺpce zdrojovej tabuľky obsahujú iný počet položiek, v ponuke sa zobrazia prázdne riadky, ako je to teraz:
Vylúčenie prázdnych riadkov z dynamického kaskádového rozbaľovacieho zoznamu
Ak chcete vyčistiť všetky prázdne riadky v rozbaľovacích zoznamoch, budete musieť urobiť ďalší krok a vylepšiť vzorec INDEX / MATCH použitý na vytvorenie závislého dynamického rozbaľovacieho zoznamu.
Ide o použitie 2 funkcií INDEX, kde prvá získa ľavú hornú bunku a druhá vráti pravú dolnú bunku rozsahu, alebo funkcie OFFSET s vnorenými funkciami INDEX a COUNTA. Podrobný postup nasleduje nižšie:
1. Vytvorte dve ďalšie mená
Aby nebol vzorec príliš objemný, vytvorte najprv niekoľko pomocných názvov s nasledujúcimi jednoduchými vzorcami:
- Meno s názvom col_num na odkaz na vybrané číslo stĺpca:
=MATCH(fruit,fruit_list,0)
- Meno s názvom whole_col na odkaz na vybraný stĺpec (nie na číslo stĺpca, ale na celý stĺpec):
=INDEX(exporters_tbl,,col_num)
Vo vyššie uvedených vzorcoch, exporters_tbl
je názov vašej zdrojovej tabuľky, ovocie
je názov bunky obsahujúcej prvé rozbaľovacie okno a fruit_list
je názov odkazujúci na riadok záhlavia tabuľky.
2. Vytvorte pomenovaný odkaz pre závislé rozbaľovacie okno
Potom použite jeden z nasledujúcich vzorcov na vytvorenie nového názvu (nazvime ho exporters_list2 ), ktoré sa majú použiť so závislým rozbaľovacím zoznamom:
=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. Aplikujte overovanie údajov
Nakoniec vyberte bunku obsahujúcu závislý rozbaľovací zoznam a použite Overenie údajov zadaním = exporters_list2 (názov vytvorený v predchádzajúcom kroku) v Zdroj box.
Na nasledujúcom obrázku je zobrazená výsledná dynamická rozbaľovacia ponuka v programe Excel, v ktorej zmizli všetky prázdne riadky!
Poznámka: Pri práci s dynamickými kaskádovými rozbaľovacími zoznamami vytvorenými pomocou vyššie uvedených vzorcov nič nebráni používateľovi zmeniť hodnotu v prvom rozbaľovacom zozname po vykonaní výberu v druhej ponuke, v dôsledku čoho sa výbery v primárnom a sekundárnom rozbaľovacom zozname môžu nezhodovať. Zmeny v prvom poli po vykonaní výberu v druhom poli môžete zablokovať pomocou VBA alebozložité vzorce navrhnuté v tomto návode.
Takto vytvoríte zoznam na overenie údajov v programe Excel na základe hodnôt iného zoznamu. Neváhajte si stiahnuť naše vzorové zošity, aby ste videli kaskádové rozbaľovacie zoznamy v akcii. Ďakujeme za prečítanie!
Cvičebnica na stiahnutie
Kaskádové rozbaľovacie okno Ukážka 1 - jednoduchá verzia
Kaskádové rozbaľovacie okno Ukážka 2 - pokročilá verzia bez prázdnych políčok