Як зробити залежний (каскадний) випадаючий список в Excel

  • Поділитися Цим
Michael Brown

Зміст

Деякий час тому ми почали вивчати можливості перевірки даних в Excel і навчилися створювати простий випадаючий список в Excel на основі списку через кому, діапазону комірок або іменованого діапазону.

Сьогодні ми детально розглянемо цю можливість і навчимося створювати каскадні випадаючі списки, які відображають варіанти в залежності від значення, вибраного в першому списку. Іншими словами, ми створимо список перевірки даних в Excel на основі значення іншого списку.

    Як створити кілька залежних випадаючих списків в Excel

    Зробити багаторівневі залежні випадаючі списки в Excel легко. Все, що вам потрібно - це кілька іменованих діапазонів і формула НЕПРЯМА. Цей спосіб працює з усіма версіями Excel 365 - 2010 і більш ранніми.

    1. введіть значення для випадаючих списків

    По-перше, введіть записи, які ви хочете, щоб з'явилися у випадаючих списках, кожен список в окремому стовпчику. Наприклад, я створюю каскадний випадаючий список експортерів фруктів і стовпчик A мого вихідного аркуша ( Фрукти ) включає елементи першого випадаючого списку, а в 3 інших колонках перераховані елементи для залежних випадаючих списків.

    2. створення іменованих діапазонів

    Тепер вам потрібно створити назви для вашого основного списку і для кожного з залежних списків. Ви можете зробити це або додавши нову назву в поле Ім'я менеджера вікно ( Формули вкладка> Name Manager> New) або набравши назву безпосередньо в полі Поле для введення імені .

    Зверніть увагу, що якщо ваш перший рядок є своєрідним заголовком стовпця, як на скріншоті вище, ви не повинні включати його до іменованого діапазону.

    Детальну покрокову інструкцію можна знайти у розділі Як визначити ім'я в Excel.

    Речі, які варто пам'ятати:

    1. Елементи, що з'являються в першому випадаючому списку, повинні бути однослівними, наприклад Абрикосовий , Манго , Апельсини Якщо у вас є елементи, що складаються з двох, трьох або більше слів, див. розділ Як створити каскадний випадаючий список з багатослівними елементами.
    2. Назви залежних списків повинні точно збігатися з відповідним записом в головному списку. Наприклад, залежний список, який буде відображатися при натисканні на кнопку " Манго " вибирається з першого випадаючого списку повинна мати назву Манго .

    Після цього ви можете натиснути комбінацію клавіш Ctrl+F3, щоб відкрити вікно Ім'я менеджера та перевірте, чи всі списки мають правильні назви та посилання.

    3. зробити перший (основний) випадаючий список

    1. У тій самій або в іншій електронній таблиці виберіть клітинку або кілька клітинок, в яких ви хочете, щоб з'явився ваш основний розкривний список.
    2. Перейдіть на сторінку Дані вкладка, натисніть Перевірка даних і налаштувати випадаючий список на основі іменованого діапазону звичайним способом, вибравши Список під Дозволити і введення назви діапазону в поле Джерело Ящик.

    Детальні кроки див. у розділі Створення випадаючого списку на основі іменованого діапазону.

    В результаті у вас на робочому аркуші з'явиться випадаюче меню, подібне до цього:

    4. створити випадаючий список залежних

    Виберіть клітинку(и) для вашого залежного розкривного меню і знову застосуйте перевірку даних Excel, як описано в попередньому кроці. Але цього разу замість імені діапазону введіть наступну формулу в поле Джерело поле:

    =INDIRECT(A2)

    Де A2 - комірка з вашим першим (основним) випадаючим списком.

    Якщо комірка A2 на даний момент пуста, то з'явиться повідомлення про помилку " Джерело на даний момент обчислює помилку. Ви хочете продовжити? "

    Безпечно натисніть Так , і як тільки ви виберете елемент з першого випадаючого списку, ви побачите відповідні йому записи в другому, залежному, випадаючому списку.

    5. додайте третій залежний випадаючий список (необов'язково)

    За необхідності можна додати 3-й каскадний випадаючий список, який залежить або від вибору в 2-му випадаючому меню, або від вибору в перших двох випадаючих списках.

    Налаштуйте 3-й випадаючий список, який залежить від 2-го списку

    Ви можете створити випадаючий список цього типу так само, як ми щойно створили друге залежне випадаюче меню. Просто пам'ятайте про 2 важливі речі, про які йшлося вище, і які необхідні для правильної роботи ваших каскадних випадаючих списків.

    Наприклад, якщо ви хочете відобразити список регіонів у колонці С в залежності від того, яка країна обрана в колонці В, ви створюєте список регіонів для кожної країни і називаєте його після назви країни, точно так, як країна з'являється у других випадаючих списках. Наприклад, список регіонів Індії повинен називатися "India", список регіонів Китаю - "China" і так далі.

    Після цього вибирається комірка для 3-го випадаючого меню (у нашому випадку С2) і застосовується перевірка даних Excel з наступною формулою (В2 - комірка з другим випадаючим меню, що містить список країн):

    =INDIRECT(B2)

    Тепер щоразу, коли ви обираєте Індія під переліком країн у колонці B у третьому випадаючому списку ви матимете наступні варіанти:

    Примітка: Список регіонів, що відображається, є унікальним для кожної країни і не залежить від вибору в першому випадаючому списку.

    Створити третій випадаючий список, залежний від перших двох

    Якщо потрібно створити каскадне випадаюче меню, яке залежить від вибору як в першому, так і в другому випадаючих списках, то дійте таким чином:

    1. Створіть додаткові набори іменованих діапазонів і дайте їм імена для словосполучень у перших двох випадаючих списках. Наприклад, у вас є Манго, апельсини тощо. у 1-му списку та Індія, Бразилія тощо. у 2-му. Потім створюються іменовані діапазони MangoIndia , MangoBrazil , АпельсиниІндія , АпельсиниБразилія і т.д. Ці назви не повинні містити підкреслень або будь-яких інших додаткових символів.

  • Застосувати перевірку даних Excel з формулою НЕПРЯМАЯ ЗАМЕНА, яка об'єднує імена записів у перших двох стовпчиках і видаляє пробіли з імен. Наприклад, у комірці С2 формула перевірки даних буде такою:
  • =INDIRECT(SUBSTITUTE(A2&B2," ",""))

    Де A2 та B2 містять перший та другий випадаючі списки відповідно.

    В результаті у вашому 3-му випадаючому списку з'являться регіони, що відповідають Фрукти і Країна обраний у перших 2 випадаючих списках.

    Це найпростіший спосіб створення каскадних випадаючих списків в Excel. Однак цей спосіб має ряд обмежень.

    Обмеження такого підходу:

    1. Елементи основного випадаючого списку повинні бути однослівними. Дивіться, як створити каскадні випадаючі списки з багатослівними елементами.
    2. Цей метод не спрацює, якщо записи в основному випадаючому списку містять символи, недозволені в назвах діапазонів, такі як дефіс (-), амперсанд (&) і т.д. Рішення полягає в тому, щоб створити динамічний каскадний випадаючий список, який не має цього обмеження.
    3. Створені таким чином випадаючі меню не оновлюються автоматично, тобто вам доведеться змінювати посилання на іменовані діапазони кожного разу, коли ви додаєте або видаляєте елементи в списках джерел. Щоб обійти це обмеження, спробуйте зробити динамічний каскадний випадаючий список.

    Створення каскадних випадаючих списків з багатослівними елементами

    Непрямі формули, які ми використовували в наведеному вище прикладі, можуть обробляти тільки однослівні елементи. Наприклад, формула =INDIRECT(A2) непрямо посилається на комірку A2 і відображає іменований діапазон точно з таким же ім'ям, як і в комірці, на яку є посилання. Однак в іменах Excel не допускаються пробіли, тому ця формула не буде працювати з іменами, що складаються з декількох слів.

    Рішення полягає у використанні функції INDIRECT у поєднанні з SUBSTITUTE, як ми робили при створенні 3-го випадаючого списку.

    Припустимо, у вас є Кавун В цьому випадку ви називаєте перелік експортерів кавуна одним словом без пробілів - "кавун". Кавун .

    Потім для другого випадаючого списку застосуйте перевірку даних Excel з наступною формулою, яка видаляє пробіли з імені в комірці A2:

    =INDIRECT(SUBSTITUTE(A2," ",""))

    Як запобігти змінам у первинному випадаючому списку

    Уявіть собі наступний сценарій: користувач зробив вибір у всіх випадаючих списках, потім передумав, повернувся до першого списку і вибрав інший пункт. В результаті 1-й і 2-й вибір не збігаються. Щоб цього не сталося, ви можете заблокувати будь-які зміни в першому випадаючому списку, як тільки буде зроблений вибір у другому списку.

    Для цього при створенні першого випадаючого меню використовуйте спеціальну формулу, яка буде перевіряти, чи обрано якийсь запис у другому випадаючому меню:

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

    Де B2 містить другий випадаючий список, " Фрукти " - назва списку, що з'являється в першому випадаючому меню, а " FakeList " - це будь-яке вигадане ім'я, якого не існує.

    Тепер, якщо у 2-му випадаючому списку обрано будь-який пункт, то при натисканні користувачем на стрілку поруч з першим списком не буде доступно жодних варіантів вибору.

    Створення динамічних каскадних випадаючих списків в Excel

    Основна перевага динамічного випадаючого списку, залежного від Excel, полягає в тому, що ви можете вільно редагувати вихідні списки, і ваші випадаючі меню будуть оновлюватися "на льоту". Звичайно, створення динамічних випадаючих списків вимагає трохи більше часу і більш складних формул, але я вважаю, що це гідна інвестиція, тому що після налаштування такі випадаючі меню доставляють справжнє задоволення від роботи з ними.

    Як і майже у випадку з будь-чим в Excel, ви можете досягти одного і того ж результату кількома способами. Зокрема, ви можете створити динамічний випадаючий список, використовуючи комбінацію функцій OFFSET, INDIRECT і COUNTA або більш стійку формулу INDEX MATCH. Останній спосіб є моїм улюбленим, оскільки він надає численні переваги, найсуттєвіші з яких такі:

    1. Ви повинні створити тільки 3 іменованих діапазони, незалежно від того, скільки елементів є в головному і залежному списках.
    2. Ваші списки можуть містити багатослівні елементи та будь-які спеціальні символи.
    3. Кількість записів у кожній колонці може бути різною.
    4. Порядок сортування записів не має значення.
    5. Нарешті, дуже легко підтримувати та змінювати списки джерел.

    Гаразд, досить теорії, переходимо до практики.

    1. організуйте вихідні дані у вигляді таблиці

    Як завжди, перше, що вам потрібно зробити, це записати всі варіанти для випадаючих списків на робочому аркуші. Цього разу вам доведеться зберігати вихідні дані в таблиці Excel. Для цього, як тільки ви ввели дані, виділіть всі записи і натисніть Ctrl + T або натисніть Вставка вкладка> Таблиця Потім введіть назву вашої таблиці в поле Назва таблиці Ящик.

    Найбільш зручним і наочним підходом є зберігання елементів для першого випадаючого списку як заголовків таблиці, а елементів для залежного випадаючого списку як даних таблиці. Скріншот нижче ілюструє структуру моєї таблиці з іменем exporters_tbl - назви фруктів є заголовками таблиць, а перелік країн-експортерів додається під відповідною назвою фруктів.

    2. створення імен в Excel

    Тепер, коли ваші вихідні дані готові, настав час налаштувати іменовані посилання, які будуть динамічно отримувати правильний список з вашої таблиці.

    2.1 Додати назву для рядка заголовка таблиці (основний випадаючий список)

    Щоб створити нове ім'я, яке посилається на заголовок таблиці, виділіть його і натисніть кнопку Формули > Ім'я менеджера > Новий або натисніть клавіші Ctrl + F3 .

    Microsoft Excel буде використовувати вбудовану систему посилань на таблиці для створення назви назва_таблиці[#Головні_заголовки] шаблон.

    Дайте йому якусь змістовну назву, що легко запам'ятовується, наприклад фруктовий_список і натисніть ГАРАЗД. .

    2.2 Створіть ім'я для комірки, що містить перший випадаючий список

    Я знаю, що у вас ще немає жодного випадаючого списку :) Але ви повинні вибрати комірку, в якій буде розміщено ваш перший випадаючий список, і створити ім'я для цієї комірки зараз, оскільки вам потрібно буде включити це ім'я в посилання на третє ім'я.

    Наприклад, моє перше розкривне вікно знаходиться в комірці B1 на аркуші 2, тому я створюю для нього ім'я, щось просте і зрозуміле, наприклад плід :

    Порада. Використовуйте відповідні посилання на клітинки для копіювати випадаючі списки по всьому аркушу.

    Будь ласка, уважно прочитайте наступні кілька абзаців, тому що це дуже корисна порада, яку ви не хочете пропустити. Щиро дякуємо Карен за публікацію!

    Якщо ви плануєте скопіювати випадаючі списки в інші клітинки, використовуйте змішані посилання на клітинки при створенні імені для клітинки (клітинок) з першим випадаючим списком.

    Щоб випадаючі списки коректно копіювалися в інші колонки (тобто праворуч), використовуйте відносні посилання на стовпці (без знаку $) та абсолютні посилання на рядки (зі знаком $) на кшталт = Аркуш2!B$1.

    В результаті залежний випадаючий список B1 з'явиться в комірці B2; залежний випадаючий список C1 відобразиться в комірці C2 і т.д.

    І якщо ви плануєте скопіювати випадаючі списки в інші ряди (тобто вниз по стовпчику), то використовуйте абсолютні координати стовпчика (з $) та відносні координати рядка (без $) на зразок = Sheet2!$B1.

    Для копіювання комірки, що випадає, в будь-якому напрямку використовується відносне посилання (без знаку $) типу = Лист2!B1.

    2.3 Створіть ім'я для пошуку пунктів залежного меню

    Замість того, щоб задавати унікальні імена для кожного з залежних списків, як ми робили в попередньому прикладі, ми створимо один названа формула яка не присвоєна жодній конкретній комірці або діапазону комірок. Вона отримає правильний список записів для другого випадаючого списку залежно від того, який вибір зроблено в першому випадаючому списку. Основна перевага використання цієї формули полягає в тому, що вам не доведеться створювати нові імена при додаванні нових записів у перший випадаючий список - одна іменована формула охоплює їх усі.

    Ви створюєте нове ім'я Excel за допомогою цієї формули:

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

    Де:

    • exporters_tbl - назва таблиці (створена на кроці 1);
    • плід - назва комірки, що містить перший випадаючий список (створений на кроці 2.2);
    • фруктовий_список - ім'я, що посилається на рядок заголовка таблиці (створений на кроці 2.1).

    Я дав йому ім'я. список_експортерів як ви бачите на скріншоті нижче.

    Що ж, основну частину роботи ви вже виконали! Перед тим, як перейти до останнього кроку, може бути корисним відкрити Менеджер імен (Ctrl + F3) і перевірити імена та посилання:

    3. налаштуйте перевірку даних в Excel

    Насправді це найпростіша частина. Маючи дві названі формули на місці, ви налаштовуєте перевірку даних звичайним способом ( Дані вкладка> Перевірка даних ).

    • Для першого випадаючого списку в полі Джерело введіть =список_фруктів (назва, створена на кроці 2.1).
    • У випадаючому списку "Залежні" введіть =список_експортерів (назва, створена на кроці 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 ім'я вашої вихідної таблиці, плід ім'я комірки, що містить перший випадаючий список, та фруктовий_список ім'я, що посилається на рядок заголовка таблиці.

    2. створити іменоване посилання для залежного випадаючого списку

    Далі за допомогою однієї з наведених нижче формул створіть нове ім'я (назвемо його список_експортерів_список2 ) для використання з залежним випадаючим списком:

    =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. застосувати перевірку даних

    Нарешті, виберіть клітинку, що містить залежний розкривний список, і застосуйте перевірку даних, ввівши =. список_експортерів_список2 (ім'я, створене на попередньому кроці) в Джерело Ящик.

    На скріншоті нижче показано результуюче динамічне випадаюче меню в Excel, де всі порожні рядки зникли!

    Примітка. При роботі з динамічними каскадними випадаючими списками, створеними за наведеними вище формулами, ніщо не заважає користувачеві змінити значення в першому випадаючому списку після здійснення вибору в другому, в результаті чого вибір в первинному і вторинному випадаючих списках може не збігатися. Заблокувати зміни в першому полі після здійснення вибору в другому можна за допомогою або VBA, абоскладні формули, запропоновані в цьому посібнику.

    Таким чином ви створюєте список перевірки даних в Excel на основі значень іншого списку. Будь ласка, завантажте наші приклади робочих книг, щоб побачити каскадні списки, що розкриваються, в дії. Дякуємо за увагу!

    Практичний посібник для завантаження

    Каскадний випадаючий зразок - проста версія

    Каскадний випадаючий зразок 2 - розширена версія без пропусків

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.