Съдържание
Преди известно време започнахме да изучаваме възможностите на валидирането на данни в Excel и научихме как да създадем прост падащ списък в Excel въз основа на списък, разделен със запетая, диапазон от клетки или именуван диапазон.
Днес ще разгледаме тази функция в дълбочина и ще научим как да създаваме каскадни падащи списъци, които показват избори в зависимост от стойността, избрана в първия падащ списък. Казано по друг начин, ще направим списък за валидиране на данни в Excel въз основа на стойността на друг списък.
Как да създадете множество зависими падащи прозорци в Excel
Създаването на зависими падащи списъци на няколко нива в Excel е лесно. Необходими са ви само няколко именувани диапазона и формулата INDIRECT. Този метод работи с всички версии на Excel 365 - 2010 и по-ранни.
1. Въведете записите за падащите списъци
Първо, въведете записите, които искате да се появят в падащите списъци, като всеки списък е в отделна колона. Например създавам каскадно падащо меню с износители на плодове и колона А от изходния лист ( Плодове ) включва елементите на първото падащо меню, а в 3 други колони са изброени елементите на зависимите падащи менюта.
2. Създаване на именувани диапазони
Сега трябва да създадете имена за основния списък и за всеки от зависимите списъци. Можете да направите това, като добавите ново име в Име на мениджъра прозорец ( Формули tab> Име на мениджъра> Нов) или да въведете името директно в Кутия за име .
Забележка: Обърнете внимание, че ако първият ред е нещо като заглавие на колона, както е показано на снимката по-горе, не трябва да го включвате в именувания диапазон.
За подробни инструкции стъпка по стъпка вижте Как да определим име в Excel.
Какво да запомните:
- Елементите, които ще се появят в първия падащ списък, трябва да бъдат еднословни, напр. Кайсия , Манго , Портокали . Ако имате елементи, състоящи се от две, три или повече думи, вижте Как да създадете каскадно падащо меню с многословни записи.
- Имената на зависимите списъци трябва да са точно същите като съответстващия запис в основния списък. Например зависимият списък, който ще се показва, когато " Манго ", избрана от първия падащ списък, трябва да се нарича Манго .
Когато приключите, може да натиснете Ctrl+F3, за да отворите Име на мениджъра и проверете дали всички списъци съдържат правилни имена и препратки.
3. Направете първия (основен) падащ списък
- В същата или в друга електронна таблица изберете клетка или няколко клетки, в които искате да се появи основният ви падащ списък.
- Отидете в Данни щракнете върху Утвърждаване на данните и да създадете падащ списък въз основа на именуван диапазон по обичайния начин, като изберете Списък под Позволете и въвеждане на името на обхвата в Източник: кутия.
За подробни стъпки вижте Създаване на падащ списък въз основа на именуван диапазон.
В резултат на това в работния ви лист ще се появи падащо меню, подобно на това:
4. Създаване на зависим падащ списък
Изберете клетка(и) за зависимото падащо меню и отново приложете Excel Data Validation, както е описано в предишната стъпка. Но този път вместо името на обхвата въведете следната формула в полето Източник: област:
=INDIRECT(A2)
Където A2 е клетката с първия (основен) падащ списък.
Ако клетка А2 в момента е празна, ще получите съобщение за грешка " Източникът в момента се оценява като грешка. Искате ли да продължите? "
Безопасно кликнете върху Да , и веднага след като изберете елемент от първото падащо меню, ще видите съответстващите му записи във втория, зависим, падащ списък.
5. Добавете трети зависим падащ списък (по избор)
Ако е необходимо, можете да добавите трети каскаден падащ списък, който зависи от избора във второто падащо меню или от избора в първите две падащи менюта.
Създаване на трето падащо меню, което зависи от втория списък
Можете да направите падащ списък от този тип по същия начин, както току-що направихме второто зависимо падащо меню. Само не забравяйте 2 важни неща, разгледани по-горе, които са от съществено значение за правилната работа на вашите каскадни падащи списъци.
Например, ако искате да покажете списък с региони в колона C в зависимост от това коя държава е избрана в колона B, създайте списък с региони за всяка държава и го наречете по името на държавата, точно както държавата се появява във вторите падащи списъци. Например списъкът с индийски региони трябва да бъде наречен "Индия", списъкът с китайски региони - "Китай", и т.н.
След това избирате клетка за третото падащо меню (C2 в нашия случай) и прилагате Excel Data Validation със следната формула (B2 е клетката с второто падащо меню, което съдържа списък с държави):
=INDIRECT(B2)
Сега всеки път, когато изберете Индия под списъка с държави в колона Б ще имате следните възможности в третия падащ списък:
Забележка: Показаният списък с региони е уникален за всяка държава, но не зависи от избора в първия падащ списък.
Създаване на трето падащо меню, което зависи от първите два списъка
Ако трябва да създадете каскадно падащо меню, което зависи от избора на първия и втория падащ списък, процедирайте по този начин:
- Създайте допълнителни набори от именувани диапазони и ги наименувайте за комбинациите от думи в първите две падащи прозорчета. Манго, портокали и др. в първия списък и Индия, Бразилия и др. в 2-ри. След това създавате именувани диапазони MangoIndia , MangoBrazil , ПортокалиИндия , ПортокалиБразилски , и т.н. Тези имена не трябва да съдържат подчертавания или други допълнителни символи.
=INDIRECT(SUBSTITUTE(A2&B2," ",""))
Където A2 и B2 съдържат съответно първото и второто падащо меню.
В резултат на това в третия ви падащ списък ще бъдат показани регионите, съответстващи на Плодове и Държава избрани в първите 2 падащи списъка.
Това е най-лесният начин за създаване на каскадни падащи полета в Excel. Този метод обаче има редица ограничения.
Ограничения на този подход:
- Елементите в основния падащ списък трябва да са еднословни. Вижте как да създавате каскадни падащи списъци с многословни записи.
- Този метод няма да работи, ако записите в основния падащ списък съдържат символи, които не са разрешени в имената на диапазони, като например тире (-), амперсанд (&) и т.н. Решението е да създадете динамично каскадно падащо меню, което няма това ограничение.
- Създадените по този начин падащи менюта не се актуализират автоматично, т.е. ще трябва да променяте препратките към именуваните диапазони всеки път, когато добавяте или премахвате елементи в изходните списъци. За да преодолеете това ограничение, опитайте да направите динамичен каскаден падащ списък.
Създаване на каскадни падащи списъци с многословни записи
Формулите INDIRECT, които използвахме в примера по-горе, могат да обработват само еднословни елементи. Например формулата =INDIRECT(A2) индиректно препраща към клетка A2 и показва посочения диапазон точно със същото име, което е в препратената клетка. В имената на Excel обаче не са разрешени интервали, поради което тази формула няма да работи с многословни имена.
Решението е да използвате функцията INDIRECT в комбинация с SUBSTITUTE, както направихме при създаването на трето падащо меню.
Да предположим, че имате Пъпеш В този случай посочвате списък на износителите на диня с една дума без интервали - Диня .
След това за второто падащо меню приложете Excel Data Validation със следната формула, която премахва интервалите от името в клетка A2:
=ИНДИРЕКТНО(SUBSTITUTE(A2," ",""))
Как да предотвратите промени в основния падащ списък
Представете си следния сценарий. Вашият потребител е направил избора във всички падащи списъци, след което е размислил, върнал се е в първия списък и е избрал друг елемент. В резултат на това първият и вторият избор са несъвместими. За да предотвратите това, може да искате да блокирате всички промени в първия падащ списък, веднага щом бъде направен избор във втория списък.
За тази цел при създаването на първото падащо меню използвайте специална формула, която ще проверява дали е избран някой запис във второто падащо меню:
=IF(B2="", Fruit, INDIRECT("FakeList"))
Където B2 съдържа второто падащо меню, " Плодове " е името на списъка, който се появява в първото падащо меню, а " Фалшив списък " е всяко фалшиво име, което не съществува.
Сега, ако някой елемент е избран във втория падащ списък, няма да има възможност за избор, когато потребителят щракне върху стрелката до първия списък.
Създаване на динамични каскадни падащи списъци в Excel
Основното предимство на динамичния падащ списък, зависим от Excel, е, че можете свободно да редактирате списъците с източници и вашите падащи полета ще се актуализират в движение. Разбира се, създаването на динамични падащи списъци изисква малко повече време и по-сложни формули, но смятам, че това е достойна инвестиция, защото веднъж създадени, такива падащи менюта са истинско удоволствие за работа.
Както при почти всичко в Excel, можете да постигнете същия резултат по няколко начина. По-специално можете да създадете динамично падащо меню, като използвате комбинация от функциите OFFSET, INDIRECT и COUNTA или по-устойчивата формула INDEX MATCH. Последният начин е предпочитан от мен, тъй като предоставя множество предимства, най-съществените от които са:
- Трябва да създадете само 3 именувани диапазона, без значение колко елемента има в основния и зависимия списък.
- Списъците ви могат да съдържат многословни елементи и всякакви специални знаци.
- Броят на вписванията във всяка колона може да варира.
- Редът на сортиране на записите няма значение.
- И накрая, поддържането и модифицирането на списъците с източници е много лесно.
Добре, стига теория, нека преминем към практиката.
1. Организирайте изходните си данни в таблица
Както обикновено, първото нещо, което трябва да направите, е да запишете всички варианти за вашите падащи списъци в работен лист. Този път ще трябва да съхраните изходните данни в таблица на Excel. За целта, след като въведете данните, изберете всички записи и натиснете Ctrl + T или щракнете върху Вмъкване на tab> Таблица . След това въведете името на вашата таблица в полето Име на таблицата кутия.
Най-удобният и нагледен подход е елементите за първото падащо меню да се съхраняват като заглавия на таблици, а елементите за зависимите падащи менюта - като данни от таблици. Снимката на екрана по-долу илюстрира структурата на моята таблица, наречена exporters_tbl - имената на плодовете са заглавия на таблици, а под съответното име на плод е добавен списък на държавите износителки.
2. Създаване на имена в Excel
След като изходните данни са готови, е време да настроите именувани препратки, които динамично ще извличат правилния списък от таблицата.
2.1. Добавяне на име за заглавния ред на таблицата (основно падащо меню)
За да създадете ново име, което да препраща към заглавието на таблицата, изберете го и щракнете върху Формули > Име на мениджъра > Нов или натиснете Ctrl + F3 .
Microsoft Excel ще използва вградената система за препратки към таблици, за да създаде името на table_name[#Headers] модел.
Дайте му някакво смислено и лесно за запомняне име, напр. fruit_list и щракнете върху OK .
2.2. Създаване на име за клетката, съдържаща първия падащ списък
Знам, че все още нямате никакво падащо меню :) Но трябва да изберете клетката, в която да се помещава първото падащо меню, и да създадете име за тази клетка сега, защото ще трябва да включите това име в препратката към третото име.
Например първото ми падащо поле се намира в клетка B1 на лист 2, така че създавам име за него, нещо просто и разбираемо като плодове :
Съвет. Използвайте подходящи препратки към клетките, за да копиране на падащи списъци в работния лист.
Моля, не забравяйте да прочетете внимателно следващите няколко параграфа, защото това е много полезен съвет, който не искате да пропуснете. Благодаря много на Карен за публикуването му!
Ако планирате да копирате падащите списъци в други клетки, използвайте смесени препратки към клетките, когато създавате името на клетката(ите) с първия падащ списък.
За да може падащите списъци да се копират правилно в други колони (т.е. надясно), използвайте относителни препратки към колони (без знака $) и абсолютни препратки към редове (със знака $), например = Sheet2!B$1.
В резултат на това зависимият падащ списък на B1 ще се появи в клетка B2; зависимият падащ списък на C1 ще се покаже в C2 и т.н.
И ако планирате да копирате падащите менюта в други редове (т.е. надолу по колоната), след това използвайте абсолютни координати на колоната (с $) и относителни координати на реда (без $) като = Sheet2!$B1.
За да копирате падаща клетка в произволна посока, използвайте относителна препратка (без знака $), например = Sheet2!B1.
2.3. Създаване на име за извличане на записите от зависимото меню
Вместо да създаваме уникални имена за всеки от зависимите списъци, както направихме в предишния пример, ще създадем един именувана формула Тя ще извлече правилния списък с вписвания за втория падащ списък в зависимост от избора, който е направен в първия падащ списък. Основното предимство на използването на тази формула е, че няма да се налага да създавате нови имена, когато добавяте нови вписвания в първия падащ списък - една именувана формула обхваща всички.
С тази формула създавате ново име в Excel:
=INDEX(exporters_tbl,,MATCH(fruit,fruit_list,0))
Къде:
exporters_tbl
- името на таблицата (създадена в стъпка 1);плодове
- името на клетката, съдържаща първия падащ списък (създаден в стъпка 2.2);fruit_list
- името, отнасящо се до заглавния ред на таблицата (създаден в стъпка 2.1).
Дадох му име exporters_list , както е показано на снимката по-долу.
Е, вече сте свършили основната част от работата! Преди да пристъпите към последната стъпка, може би е добре да отворите мениджъра на имената ( Ctrl + F3 ) и да проверите имената и препратките:
3. Настройка на валидиране на данни в Excel
Всъщност това е най-лесната част. След като сте създали двете формули с имена, настройте валидирането на данните по обичайния начин ( Данни tab> Валидиране на данни ).
- За първия падащ списък в полето Source въведете =fruit_list (името, създадено в стъпка 2.1).
- За падащия списък със зависимости въведете =exporters_list (името, създадено в стъпка 2.3).
Готово! Вашето динамично каскадно падащо меню е готово и ще се актуализира автоматично, отразявайки промените, които сте направили в изходната таблица.
Това динамично падащо меню на Excel, което е перфектно във всяко друго отношение, има един недостатък - ако колоните на изходната таблица съдържат различен брой елементи, празните редове ще се появят в менюто ви по следния начин:
Изключване на празни редове от динамичното каскадно падащо меню
Ако искате да изчистите празните редове в падащите полета, ще трябва да направите още една стъпка и да подобрите формулата INDEX / MATCH, използвана за създаване на зависимия динамичен падащ списък.
Идеята е да се използват 2 функции INDEX, като първата получава горната лява клетка, а втората връща долната дясна клетка на обхвата, или функцията OFFSET с вложени INDEX и COUNTA. Подробните стъпки следват по-долу:
1. Създайте две допълнителни имена
За да не бъде формулата прекалено обемна, първо създайте няколко помощни имена със следните прости формули:
- Име, наречено col_num за препратка към номера на избраната колона:
=MATCH(fruit,fruit_list,0)
- Име, наречено whole_col за препратка към избраната колона (не към номера на колоната, а към цялата колона):
=INDEX(exporters_tbl,,col_num)
В горните формули, exporters_tbl
е името на изходната таблица, плодове
е името на клетката, съдържаща първото падащо меню, и fruit_list
е името, отнасящо се до заглавния ред на таблицата.
2. Създайте именуваната препратка за зависимото падащо меню
След това използвайте някоя от следните формули, за да създадете ново име (нека го наречем exporters_list2 ), които да се използват със зависимия падащ списък:
=INDEX(exporters_tbl,1,col_num) : INDEX(exporters_tbl, COUNTA(entire_col), col_num)
=OFFSET(INDEX(exporters_tbl,1,col_num),0,0,COUNTA(entire_col))
3. Прилагане на валидиране на данни
Накрая изберете клетката, в която се намира зависимото падащо меню, и приложете валидиране на данните, като въведете = exporters_list2 (името, създадено в предишната стъпка) в Източник: кутия.
Снимката на екрана по-долу показва полученото динамично падащо меню в Excel, в което всички празни редове са изчезнали!
Забележка. Когато работите с динамични каскадни падащи списъци, създадени с горните формули, нищо не пречи на потребителя да промени стойността в първото падащо меню, след като направи избор във второто меню, в резултат на което изборите в основното и допълнителното падащо меню може да се разминат. Можете да блокирате промените в първото поле, след като е направен избор във второто, като използвате VBA илисложни формули, предложени в този урок.
Ето как създавате списък за валидиране на данни в Excel въз основа на стойностите на друг списък. Моля, не се колебайте да изтеглите нашите примерни работни книги, за да видите каскадните падащи списъци в действие. Благодарим ви, че прочетохте!
Практическа работна тетрадка за изтегляне
Каскадно падащо прозорче 1 - лесна версия
Cascading Dropdown Sample 2 - разширена версия без празни полета