Оглавление
Некоторое время назад мы начали изучать возможности Excel Data Validation и узнали, как создать простой выпадающий список в Excel на основе списка, разделенного запятыми, диапазона ячеек или именованного диапазона.
Сегодня мы подробно рассмотрим эту функцию и научимся создавать каскадные выпадающие списки, которые отображают варианты выбора в зависимости от значения, выбранного в первом выпадающем списке. Говоря иначе, мы создадим список проверки данных Excel, основанный на значении другого списка.
Как создать несколько зависимых выпадающих элементов в Excel
Создать многоуровневые зависимые раскрывающиеся списки в Excel очень просто. Все, что вам нужно, - это несколько именованных диапазонов и формула INDIRECT. Этот метод работает со всеми версиями Excel 365 - 2010 и более ранними.
1. Введите записи для выпадающих списков
Во-первых, введите записи, которые вы хотите видеть в раскрывающихся списках, каждый список в отдельном столбце. Например, я создаю каскадный раскрывающийся список экспортеров фруктов и столбец A моего исходного листа ( Фрукты ) включает элементы первого выпадающего списка, а в 3 других столбцах перечислены элементы зависимых выпадающих списков.
2. Создание именованных диапазонов
Теперь вам нужно создать имена для вашего главного списка и для каждого из зависимых списков. Вы можете сделать это либо добавив новое имя в разделе Именной менеджер окно ( Формулы вкладка> Менеджер по работе с именами> New) или ввести имя непосредственно в Именная коробка .
Примечание. Обратите внимание, что если первая строка является заголовком столбца, как на скриншоте выше, вы не должны включать ее в именованный диапазон.
Подробные пошаговые инструкции см. в разделе Как определить имя в Excel.
О чем следует помнить:
- Элементы, которые должны появиться в первом выпадающем списке, должны быть однословными, например Абрикос , Манго , Апельсины Если у вас есть элементы, состоящие из двух, трех или более слов, см. раздел Как создать каскадный выпадающий список с многословными элементами.
- Имена зависимых списков должны в точности совпадать с именем соответствующей записи в основном списке. Например, зависимый список, который будет отображаться, когда " Манго ", выбранный из первого выпадающего списка, должен иметь имя Манго .
После этого вы можете нажать Ctrl+F3, чтобы открыть меню Именной менеджер окно и проверьте, все ли списки содержат правильные имена и ссылки.
3. Создайте первый (основной) выпадающий список
- В той же или в другой электронной таблице выберите ячейку или несколько ячеек, в которых должен появиться основной раскрывающийся список.
- Перейти к Данные вкладка, нажмите Валидация данных и установить выпадающий список на основе именованного диапазона обычным способом, выбрав Список по адресу Разрешить и введите имя диапазона в поле Источник коробка.
Подробные шаги см. в разделе Создание выпадающего списка на основе именованного диапазона.
В результате в рабочем листе появится выпадающее меню, похожее на это:
4. Создайте зависимый выпадающий список
Выберите ячейку(и) для зависимого выпадающего меню и снова примените Excel Data Validation, как описано в предыдущем шаге. Но на этот раз вместо имени диапазона введите следующую формулу в поле Источник поле:
=INDIRECT(A2)
Где A2 - ячейка с вашим первым (основным) выпадающим списком.
Если ячейка A2 в данный момент пуста, вы получите сообщение об ошибке " Источник в настоящее время оценивается как ошибка. Вы хотите продолжить? "
Безопасное нажатие Да , и как только вы выберете элемент из первого выпадающего меню, вы увидите соответствующие ему записи во втором, зависимом, выпадающем списке.
5. добавьте третий зависимый выпадающий список (необязательно)
При необходимости можно добавить третий каскадный выпадающий список, который зависит либо от выбора во втором выпадающем меню, либо от выбора в первых двух выпадающих списках.
Установите 3-й выпадающий список, который зависит от 2-го списка
Вы можете сделать выпадающий список этого типа таким же образом, как мы только что сделали второе зависимое выпадающее меню. Только помните о двух важных вещах, о которых говорилось выше и которые необходимы для правильной работы ваших каскадных выпадающих списков.
Например, если вы хотите отобразить список регионов в колонке C в зависимости от того, какая страна выбрана в колонке B, вы создаете список регионов для каждой страны и называете его по названию страны, точно так же, как страна отображается во втором выпадающем списке. Например, список регионов Индии должен называться "Индия", список регионов Китая - "Китай", и так далее.
После этого вы выбираете ячейку для третьего выпадающего меню (в нашем случае C2) и применяете Excel Data Validation со следующей формулой (B2 - это ячейка со вторым выпадающим меню, содержащим список стран):
=INDIRECT(B2)
Теперь каждый раз, когда вы выбираете Индия под списком стран в столбце B, в третьем выпадающем списке у вас будут следующие варианты:
Примечание. Отображаемый список регионов уникален для каждой страны, но он не зависит от выбора в первом выпадающем списке.
Создайте третий выпадающий список, зависящий от первых двух списков
Если вам нужно создать каскадное выпадающее меню, которое зависит от выбора как в первом, так и во втором выпадающем списке, то действуйте следующим образом:
- Создайте дополнительные наборы именованных диапазонов и назовите их для словосочетаний в первых двух выпадающих списках. Например, у вас есть Манго, апельсины и т.д. в 1-м списке и Индия, Бразилия и т.д. во втором. Затем вы создаете именованные диапазоны МангоИндия , МангоБразилия , АпельсиныИндия , АпельсиныБразилия , и т.д. Эти имена не должны содержать подчеркиваний или каких-либо других дополнительных символов.
=INDIRECT(SUBSTITUTE(A2&B2," ",""))
Где A2 и B2 содержат первый и второй выпадающие списки, соответственно.
В результате в вашем 3-м выпадающем списке будут отображаться регионы, соответствующие Фрукты и Страна выбранные в первых двух выпадающих списках.
Это самый простой способ создания каскадных выпадающих окон в Excel. Однако этот метод имеет ряд ограничений.
Ограничения этого подхода:
- Элементы основного раскрывающегося списка должны состоять из одного слова. Смотрите, как создать каскадные раскрывающиеся списки с многословными элементами.
- Этот метод не будет работать, если записи в вашем основном выпадающем списке содержат символы, недопустимые в именах диапазонов, такие как дефис (-), амперсанд (&) и т.д. Решение заключается в создании динамического каскадного выпадающего списка, который не имеет этого ограничения.
- Выпадающие меню, созданные таким образом, не обновляются автоматически, т.е. вам придется менять ссылки именованных диапазонов каждый раз, когда вы добавляете или удаляете элементы в исходных списках. Чтобы преодолеть это ограничение, попробуйте создать динамический каскадный выпадающий список.
Создание каскадных выпадающих списков с многословными элементами
Формулы INDIRECT, которые мы использовали в приведенном выше примере, могут работать только с однословными элементами. Например, формула =INDIRECT(A2) косвенно ссылается на ячейку A2 и отображает именованный диапазон именно с тем же именем, что и в ссылающейся ячейке. Однако пробелы не допускаются в именах Excel, поэтому эта формула не будет работать с многословными именами.
Решением является использование функции INDIRECT в сочетании с SUBSTITUTE, как мы делали при создании третьего выпадающего списка.
Предположим, у вас есть Водяная дыня среди продукции. В этом случае вы называете список экспортеров арбуза одним словом без пробелов -. Арбуз .
Затем для второго выпадающего списка примените проверку данных Excel с помощью следующей формулы, которая удаляет пробелы из имени в ячейке A2:
= INDIRECT(SUBSTITUTE(A2," ",""))
Как предотвратить изменения в первичном выпадающем списке
Представьте себе следующий сценарий. Ваш пользователь сделал выбор во всех выпадающих списках, затем передумал, вернулся к первому списку и выбрал другой элемент. В результате 1-й и 2-й варианты выбора не совпадают. Чтобы этого не произошло, вы можете заблокировать любые изменения в первом выпадающем списке, как только выбор сделан во втором списке.
Для этого при создании первого выпадающего меню используйте специальную формулу, которая будет проверять, выбран ли какой-либо элемент во втором выпадающем меню:
=IF(B2="", Fruit, INDIRECT("FakeList"))
Где B2 содержит второй выпадающий список, " Фрукты " - это имя списка, который появляется в первом выпадающем меню, а " FakeList " - любое вымышленное имя, которого не существует.
Теперь, если во втором выпадающем списке выбран какой-либо элемент, то при нажатии на стрелку рядом с первым списком выбор будет недоступен.
Создание динамических каскадных выпадающих списков в Excel
Главное преимущество динамического зависимого выпадающего списка Excel заключается в том, что вы можете свободно редактировать исходные списки, и ваши выпадающие поля будут обновляться на лету. Конечно, создание динамических выпадающих списков требует немного больше времени и более сложных формул, но я считаю, что это достойное вложение, потому что после настройки такие выпадающие меню - настоящее удовольствие в работе.
Как и почти во всем в Excel, вы можете достичь того же результата несколькими способами. В частности, вы можете создать динамический выпадающий список, используя комбинацию функций OFFSET, INDIRECT и COUNTA или более устойчивую формулу INDEX MATCH. Последний способ я предпочитаю, поскольку он обеспечивает множество преимуществ, наиболее существенными из которых являются:
- Вы должны создать только 3 именованных диапазона, независимо от того, сколько элементов в главном и зависимом списках.
- Ваши списки могут содержать многословные элементы и любые специальные символы.
- Количество записей в каждой колонке может быть разным.
- Порядок сортировки записей не имеет значения.
- Наконец, очень легко поддерживать и изменять исходные списки.
Ладно, хватит теории, давайте перейдем к практике.
1. Организуйте исходные данные в таблице
Как обычно, первое, что вам нужно сделать, это записать все варианты для ваших выпадающих списков в рабочем листе. На этот раз вам придется хранить исходные данные в таблице Excel. Для этого, после ввода данных, выделите все записи и нажмите Ctrl + T или щелкните мышью Вставка вкладка> Таблица Затем введите имя вашей таблицы в поле Название таблицы коробка.
Наиболее удобный и наглядный подход заключается в том, чтобы хранить элементы первого выпадающего списка как заголовки таблицы, а элементы зависимого выпадающего списка как данные таблицы. На скриншоте ниже показана структура моей таблицы с именем экспортеры_tbl - названия фруктов являются заголовками таблиц, а под соответствующим названием фрукта добавлен список стран-экспортеров.
2. Создание имен в Excel
Теперь, когда исходные данные готовы, пришло время установить именованные ссылки, которые будут динамически извлекать нужный список из вашей таблицы.
2.1. Добавьте имя для строки заголовка таблицы (основной выпадающий список)
Чтобы создать новое имя, ссылающееся на заголовок таблицы, выберите его, а затем либо нажмите кнопку Формулы > Именной менеджер > Новый или нажмите Ctrl + F3 .
Microsoft Excel будет использовать встроенную систему ссылок на таблицы для создания имени table_name[#Headers] модель.
Дайте ему какое-нибудь значимое и легко запоминающееся имя, например. фруктовый_список , и нажмите 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))
Где:
экспортеры_tbl
- имя таблицы (созданной в шаге 1);фрукты
- имя ячейки, содержащей первый выпадающий список (созданный в шаге 2.2);фруктовый_список
- имя, ссылающееся на строку заголовка таблицы (созданную в шаге 2.1).
Я дал ему имя список_экспортёров как показано на скриншоте ниже.
Вы уже выполнили основную часть работы! Прежде чем приступить к последнему шагу, неплохо было бы открыть диспетчер имен ( Ctrl + F3 ) и проверить имена и ссылки:
3. Настройка валидации данных Excel
Это на самом деле самая простая часть. С двумя именованными формулами на месте, вы устанавливаете проверку данных обычным способом ( Данные вкладка> Валидация данных ).
- Для первого раскрывающегося списка в поле Источник введите = фруктовый_список (имя, созданное в шаге 2.1).
- Для раскрывающегося списка зависимых введите = список_экспортеров (имя, созданное в шаге 2.3).
Готово! Ваше динамическое каскадное выпадающее меню готово и будет автоматически обновляться, отражая изменения, внесенные в исходную таблицу.
Этот динамический выпадающий список Excel, идеальный во всех других отношениях, имеет один недостаток - если столбцы вашей исходной таблицы содержат разное количество элементов, пустые строки появятся в вашем меню вот так:
Исключение пустых строк из динамического каскадного выпадающего списка
Если вы хотите убрать пустые строки в ваших выпадающих списках, вам придется сделать еще один шаг вперед и улучшить формулу INDEX / MATCH, используемую для создания зависимого динамического выпадающего списка.
Идея заключается в использовании двух функций INDEX, где первая получает левую верхнюю ячейку, а вторая возвращает правую нижнюю ячейку диапазона, или функции OFFSET с вложенными INDEX и COUNTA. Подробные шаги следуют ниже:
1. создайте два дополнительных имени
Чтобы не делать формулу слишком громоздкой, создайте сначала пару вспомогательных имен с помощью следующих простых формул:
- Имя по имени col_num для ссылки на номер выбранного столбца:
=MATCH(fruit,fruit_list,0)
- Имя по имени весь_цвет для ссылки на выбранный столбец (не на номер столбца, а на весь столбец):
=INDEX(exporters_tbl,,col_num)
В приведенных выше формулах, экспортеры_tbl
это имя вашей исходной таблицы, фрукты
это имя ячейки, содержащей первый выпадающий список, и список фруктов
это имя, ссылающееся на строку заголовка таблицы.
2. Создайте именованную ссылку для зависимого выпадающего списка
Затем используйте одну из приведенных ниже формул для создания нового имени (назовем его список_экспортёров2 ) для использования с зависимым выпадающим списком:
=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. применение валидации данных
Наконец, выберите ячейку, содержащую зависимый выпадающий список, и примените проверку данных, введя = список_экспортёров2 (имя, созданное в предыдущем шаге) в Источник коробка.
На скриншоте ниже показано получившееся динамическое выпадающее меню в Excel, в котором исчезли все пустые строки!
Примечание. При работе с динамическими каскадными выпадающими списками, созданными с помощью приведенных выше формул, ничто не мешает пользователю изменить значение в первом выпадающем списке после выбора во втором меню, в результате чего выбор в первичном и вторичном выпадающих списках может не совпадать. Вы можете заблокировать изменения в первом блоке после выбора во втором с помощью VBA илисложные формулы, предложенные в этом учебнике.
Вот как создается список проверки данных в Excel на основе значений другого списка. Пожалуйста, не стесняйтесь загрузить наши примеры рабочих книг, чтобы увидеть каскадные выпадающие списки в действии. Спасибо за чтение!
Рабочая тетрадь для тренировок для скачивания
Образец каскадного выпадающего списка - простая версия
Cascading Dropdown Sample 2 - расширенная версия без пробелов