Для моделирования сложных иерархических данных создадим Многоуровневый связанный список.
Потребность в создании иерархических данных появляется при решении следующих задач:
Отдел
–
Сотрудники отдела
. При выборе отдела из списка всех отделов компании, динамически должен формироваться список, содержащий всех сотрудников этого отдела (двухуровневая иерархия);
Город – Улица – Номер дома
. При заполнении адреса проживания из списка городов нужно выбирать
город
, затем из списка всех улиц этого города –
улицу
, затем, из списка всех домов на этой улице –
номер дома
(трехуровневая иерархия).
В этой статье рассмотрен
Многоуровневый связанный список. Двухуровневый связанный список
или просто
Связанный список
рассмотрен в статьях
Связанный список
и
Расширяемый Связанный список.
Материал статьи один из самых сложных на сайте
Excel2.ru
, поэтому необходимо для начала ознакомиться с вышеуказанными статьями.
Многоуровневый связанный список
будем реализовывать с помощью инструмента
Проверка данных
(
) с условием проверки
Список
.Создание
Многоуровневого связанного списка
рассмотрим на конкретном примере.
Примечание
: Рассмотренный в этой статье Многоуровневый связанный список на самом деле правильнее назвать Трехуровневым, т.к. создать четырехуровневый связанный список, используя рассмотренный здесь подход, очень проблематично. Для тех, кому требуется создать структуру с 4-мя и более уровнями, см. статью
Многоуровневый связанный список типа Предок-Родитель
.
Постановка задачи
Имеется перечень
Регионов
. Для каждого
Региона
имеется свой перечень
Стран
. Для каждой
Страны
имеется свой перечень
Городов
.
Пользователь должен иметь возможность, выбрав определенный
Регион
, в соседней ячейке выбрать из
Выпадающего (раскрывающегося) списка
нужную ему
Страну
из этого
Региона
. В другой соседней ячейке пользователь должен иметь возможность выбрать нужный ему
Город
из этой
Страны
(см.
файл примера
).
В окончательном виде трехуровневый связанный список должен работать так:
Сначала выберем, например,
Регион
«Америка» с помощью
Выпадающего списка
.
Затем выберем
Страну
«США» из
Региона
«Америка».
Причем перечень стран в
выпадающем списке
будет содержать только страны из выбранного на предыдущем шаге
Региона
«Америка».
И, наконец, выберем
Город
«Атланта» из
Страны
«США».
Причем перечень городов в
выпадающем списке
будет содержать только города из выбранной на предыдущем шаге
Страны,
т.е. из «США».
Решение
Итак, приступим к созданию
Трехуровневого связанного списка
. Таблицу, в которую будут заноситься данные с помощью
Трехуровневого
связанного списка
, разместим на листе
Таблица
.
Список
Регионов
и перечни
Стран
разместим на листе
Страны
.
Обратите внимание, что названия
Регионов
(диапазон
А2:А12
на листе
Страны
) в точности должны совпадать с заголовками столбцов, содержащих названия соответствующих
Стран
(
В1:
L
1
).
Это требование обеспечивается формулой (см. статьи о
Транспонировании
).
=ДВССЫЛ(АДРЕС(СТРОКА($A$1)-СТОЛБЕЦ($A$1)+СТОЛБЕЦ();1))
с помощью которой формируются заголовки столбцов. Введем ее в диапазон ячеек
В1:
L
1
.
Список
Стран
и перечни
Городов
разместим на листе
Города
.
Откуда же возьмется перечень стран на листе
Города
? Очевидно, что после заполнения листа
Страны
названиями стран, необходимо, что они каким-то чудесным образом переместились на лист
Города
. Это чудесное перемещение организуем формулами. Список
Стран
сформируем на листе
Города
в столбце
А
с помощью решения приведенного в статье
Объединение списков
. Значения для этого списка будем брать из
Именованного диапазона
Диап_Стран
(его нужно предварительно создать через
Диспетчер имен
)
. Именованный диапазон
Диап_Стран
образуем формулой:
=СМЕЩ(страны!$B$2;;;90;СЧЁТЕСЛИ(страны!$B$1:$Z$1;»?*»))
Для формирования списка
Стран
нам также понадобится
Именованная формула
Строки_Столбцы_Стран
=ЕСЛИ(ЕПУСТО(Диап_Стран);»»;—((СТОЛБЕЦ(Диап_Стран)-1)&ВЫБОР(ДЛСТР(СТРОКА(Диап_Стран)-1);»0″;»»)&СТРОКА(Диап_Стран)-1))
Окончательная формула в столбце
А
на листе
Города
выглядит так:
=ЕСЛИОШИБКА(ИНДЕКС(Диап_Стран;—ПРАВСИМВ(НАИМЕНЬШИЙ(Строки_Столбцы_Стран;СТРОКА(Z1));2);—ЛЕВСИМВ(НАИМЕНЬШИЙ(Строки_Столбцы_Стран;СТРОКА(Z1));ДЛСТР(НАИМЕНЬШИЙ(Строки_Столбцы_Стран;СТРОКА(Z1)))-2));»»)
сформирует необходимый нам список
Стран
.
Теперь создадим
Динамический диапазон
для формирования
Выпадающего списка
содержащего названия
Регионов
. Для этого необходимо:
-
нажать кнопку меню «
Присвоить имя
»
(
); -
в поле
Имя
ввести
Регионы
; -
в поле
Диапазон
ввести формулу
=страны!$A$2:ИНДЕКС(страны!$A:$A;СЧЁТЗ(страны!$A:$A))
- Нажать ОК.
Формула подсчитывает количество элементов в столбце
А
на листе
Страны
(функция
СЧЁТЗ()
) и определяет ссылку на последний элемент в столбце (функция
ИНДЕКС()
), тем самым формируется диапазон, содержащий все значения
Регионов
. Пропуски в столбце
А
не допускаются.
Аналогичным образом создадим
Динамический диапазон
Список_Стран
для формирования
выпадающего списка
содержащего названия стран:
=города!$A$2:ИНДЕКС(города!$A:$A;СЧЁТЗ(города!$A:$A))
Создадим
Именованную формулу
Позиция_региона
для определения позиции, выбранного пользователем региона, в созданном выше диапазоне
Регионы:
=ПОИСКПОЗ(A5;Регионы;0)
Т.к. в формуле использована
относительная адресация
, то важно перед созданием формулы сделать активной ячейку
B5
на листе
Таблица
.
Аналогичным образом создадим
именованную формулу
для определения позиции, выбранной пользователем страны, в диапазоне
Список_Стран
=ПОИСКПОЗ(таблица!B5;Список_Стран;0)
. Перед созданием формулы нужно сделать активной ячейку
С5
на листе
Таблица
.
Создадим
Именованные константы
МаксСтран
равную 20 и
МаксГородов
равную 30. Константы соответствует максимальному количеству стран в регионе и, соответственно, максимальному количеству городов в стране. Эти значения произвольны и их можно изменить.
Создадим
именованный диапазон
Выбранный_Регион
для определения диапазона на листе
Страны
, содержащего страны выбранного региона:
=СМЕЩ(страны!$A$2;;Позиция_региона;МаксСтран)
Теперь, например, при выборе региона
Америка
функция
СМЕЩ()
вернет ссылку на диапазон
страны!$B$2:$B$20
Создадим аналогичный диапазон
Выбранная_Страна
для определения диапазона на листе
Города
, содержащего города выбранного региона:
=СМЕЩ(города!$A$2;;Позиция_страны;МаксГородов)
Создадим две последние именованные формулы
Страны
и
Города
:
=СМЕЩ(страны!$A$2;;Позиция_региона;СЧЁТЗ(Выбранный_Регион)) =СМЕЩ(города!$A$2;;Позиция_страны;СЧЁТЗ(Выбранная_Страна))
Эти формулы нужны для того, чтобы в
выпадающих списках
не отображались пустые строки.Наконец сформируем
связанный выпадающий
список
для ячеек из столбца
Страна
налисте
Таблица
.
-
выделяем диапазон
B
5:
B
22
налисте
Таблица
; -
вызываем инструмент
Проверка данных
,
-
устанавливаем тип данных
Список
, -
в поле
Источник
вводим:
=Страны
.
Также создадим
связанный выпадающий
список
для ячеек из столбца
Город
(диапазон
С5:С22
, в поле
Источник
вводим:
=Города
)
На листе
Таблица
после выбора
Региона
и
Страны
теперь есть возможность выбора
Города
.
Для добавления новых
Регионов
и их
Стран
достаточно ввести новый
Регион
в столбец
A
(лист
Страны
), в строке
1
автоматически отобразится соответствующий заголовок. Под появившимся заголовком в строке
1
введите страны нового
Региона
.Для добавления новых
Городов,
на листе
Города
в строке
1
найдите нужное название страны (оно автоматически появится там после добавления страны на листе
Страны
). Под этим заголовком введите название города.
СОВЕТ:
В этой статье города (и страны) размещены в нескольких столбцах. Обычно однотипные значения размещают в одном столбце (списке). В статье
Многоуровневый связанный список в MS EXCEL на основе таблицы
все исходные данные размещены на одном листе, а однотипные данные (названия городов) — в одном столбце. Это облегчает написание формул и позволяет создать списки с большим количеством уровней иерархии (4-6).
Автор надстройки PowerQuick
-
17 июля, 2020 -
,
Статьи по Excel
В данной статье рассматривается методика быстрого создания многоуровневых (каскадных) выпадающих списков в Excel на основе умных таблиц для моделирования иерархических данных. В качестве примера в видеоуроке создаются 6-уровневые выпадающие списки.
Мир вокруг нас полон иерархических структур. Зачастую при разработке форм в Microsoft Excel мы сталкиваемся с задачей организации выбора показателей, имеющих некую иерархию, например, адреса (страна-город-улица-дом), организационная структура предприятия (департамент – управление – отдел-сотрудник) или же номенклатура товаров магазина. Почти каждый пользователь Excel умеет создавать в ячейке выпадающий список, более продвинутые могут создать второй, связанный с первым выпадающий список.
А можно ли создавать более сложные системы списков в Excel? На самом деле да, причем количество уровней таких списков ничем не ограничено и определяется только вашей потребностью. Рассмотрим методику, которая позволяет быстро и без особого труда строить многоуровневые выпадающие списки.
Основное преимущество данной методики состоит в том, что полученная система является полностью динамической, т.е. в неё можно добавить любые данные, даже целые ветви иерархии, и они автоматически попадут в выпадающие списки.
Основа методики – организация исходной информации в «Умных таблицах», т.е. специально структурированных объектах Excel. «Умную таблицу» можно создать клавишами Ctrl+T или кнопкой Таблица на вкладке Вставка, после чего таблице необходимо задать имя (во всплывающей при её выделении вкладки Конструктор). Основное требование – названия нижестоящих таблиц должны соответствовать элементам вышестоящих. В качестве примера рассмотрим фрагмент 6-уровневой иерархии товаров магазина, оформленной в “Умных таблицах”:
Первая таблица Группы_товаров связывает группы товаров и категории: в магазине 2 группы товаров – поля Продукты_питания и Одежда, каждая из которых включает по 2 категории товаров: продукты питания состоят из элементов Молочные_продукты и Мясо, одежда – Верхняя_одежда и Спортивные_товары.
Обратите внимание! Элементы таблицы будут являться одновременно названием для нижестоящих таблиц. К именам таблиц предъявляются специальные требования: имя должно начинаться с буквы, не должно содержать пробелов и специальных символов.
На следующем уровне создаются таблицы, связывающие категории и виды продукции: в приведенном примере создана таблица с именем Молочные_продукты, содержащая поля Молоко (подразделяется на козье и коровье) и Сыр (подразделяется на твердый и полутвердый), а также таблица с именем Мясо, содержащая поля Красное_мясо (подразделяется на говядина и свинина) и Птица (подразделяется на курицу и индейку).
Остальные данные организуются по такому же принципу. После того, как данные организованы, необходимо непосредственно создать выпадающие списки, которые задаются специальными формулами, вводимыми в поле Источник в меню Проверка данных – Список:
Всего возможны три вида выпадающих списков:
1 уровень (первичный, не связанный ни с чем список)
2 уровень (имеющий одну связь на один вышестоящий выпадающий список: имя таблицы или имя поля)
3 уровень (имеющий две связи на вышестоящие списки: на имя таблицы и имя поля)
Обратите внимание! Все уровни иерархии моделируются с использованием этих трёх видов выпадающих списков, сгруппированных в различных комбинациях.
Итак, вот формулы, которые подставляются в Проверку данных в зависимости от конкретной ситуации. Обратите внимание, вместо красного текста подставляются непосредственно названия таблиц и полей, а вместо оранжевого – ставится ссылка на выпадающий список вышестоящего уровня:
Выпадающий список 1 уровня:
Создать список конкретных умных таблиц книги: Таблица1;Таблица2;Таблица3
Создать список полей конкретной таблицы: =ДВССЫЛ(“Таблица1“&”[#Заголовки]”)
Создать список элементов конкретного поля конкретной таблицы: =ДВССЫЛ(“Таблица1“&”[Поле1]”)
Выпадающий список 2 уровня:
Создать список полей таблицы, выбираемой в вышестоящем списке: =ДВССЫЛ(A1&”[#Заголовки]”)
Создать список элементов выбираемого поля конкретной таблицы: =ДВССЫЛ(“Таблица1“&”[“&А1&”]”)
Выпадающий список 3 уровня
Создать список элементов выбираемого поля выбираемой таблицы: =ДВССЫЛ(A1&”[“&B1&”]”)
Формулы можно задать вручную, что, однако, достаточно трудоемко. Лучше всего воспользоваться специальной группой команд Выпадающие списки в нашей надстройке PowerQuick для Excel, которая моментально сформирует за вас нужные формулы через специальные формы. Вам останется только скопировать нужные формулы в меню Проверка данных Excel.
Ну а если у вас есть трудности с организацией исходных данных и построением выпадающих списков, вы всегда можете получить консультацию разработчиков!
Как быстро создать многоуровневые (каскадные) выпадающие списки в Excel
В данной статье рассматривается методика быстрого создания многоуровневых (каскадных) выпадающих списков в Excel на основе умных таблиц для моделирования иерархических данных. В качестве примера в видеоуроке создаются 6-уровневые выпадающие списки.
Видеоурок к статье:
Первая таблица Группы_товаров связывает группы товаров и категории: в магазине 2 группы товаров – поля Продукты_питания и Одежда , каждая из которых включает по 2 категории товаров: продукты питания состоят из элементов Молочные_продукты и Мясо , одежда – Верхняя_одежда и Спортивные_товары .
Обратите внимание! Элементы таблицы будут являться одновременно названием для нижестоящих таблиц. К именам таблиц предъявляются специальные требования: имя должно начинаться с буквы, не должно содержать пробелов и специальных символов.
На следующем уровне создаются таблицы, связывающие категории и виды продукции: в приведенном примере создана таблица с именем Молочные_продукты , содержащая поля Молоко (подразделяется на козье и коровье) и Сыр (подразделяется на твердый и полутвердый), а также таблица с именем Мясо , содержащая поля Красное_мясо (подразделяется на говядина и свинина) и Птица (подразделяется на курицу и индейку).
Остальные данные организуются по такому же принципу.
Список 1 уровня
Создать список конкретных умных таблиц книги: Таблица1;Таблица2;Таблица3
Создать список полей конкретной таблицы:
=ДВССЫЛ(» Таблица1 «&»[#Заголовки]»)
Создать список элементов конкретного поля конкретной таблицы: =ДВССЫЛ(» Таблица1 «&»[ Поле1 ]»)
Список 2 уровня
Создать список полей таблицы, выбираемой в вышестоящем списке:
=ДВССЫЛ( A1 &»[#Заголовки]»)
Создать список элементов выбираемого поля конкретной таблицы: =ДВССЫЛ(» Таблица1 «&»[«& А1 &»]»)
Список 3 уровня
Создать список элементов выбираемого поля выбираемой таблицы: =ДВССЫЛ( A1 &»[«& B1 &»]»)
После того, как данные организованы, необходимо непосредственно создать выпадающие списки, которые задаются специальными формулами, вводимыми в поле Источник в меню Проверка данных – Список:
Формулы можно задать вручную, что, однако, достаточно трудоемко. Лучше всего воспользоваться специальной группой команд Выпадающие списки в надстройке SubEx для Excel , которая моментально сформирует за вас нужные формулы!
Всего возможны три вида выпадающих списков:
1 уровня (первичный, не связанный ни с чем список)
2 уровня (имеющий одну связь на один вышестоящий выпадающий список: имя таблицы или имя поля)
3 уровня (имеющий две связи на вышестоящие списки: на имя таблицы и имя поля)
Обратите внимание! Все уровни иерархии моделируются с использованием этих трёх видов выпадающих списков, сгруппированных в различных комбинациях.
Итак, вот формулы, которые подставляются в Проверку данных в зависимости от конкретной ситуации. Обратите внимание, вместо красного текста подставляются непосредственно названия таблиц и полей, а вместо оранжевого — ставится ссылка на выпадающий список вышестоящего уровня:
Список первого уровня является первичным, т.е. задается абсолютно и не является зависимым, это может быть список таблиц книги, список полей конкретной таблицы или список элементов конкретного поля конкретной таблицы, в зависимости от ваших потребностей.
Следующие списки будут связанными, т.е. зависеть от выбранного значения вышестоящего списка. Список может быть 2 уровня, т.е. ссылаться на один вышестоящий список, или 3 уровня, т.е. ссылаться на два вышестоящих списка (например, на список с именем таблицы и список с именем поля таблицы).
Как было сказано выше полученная система таблиц и списков является полностью динамической: можно добавлять новые поля и элементы в любую таблицу и они автоматически подвяжутся в выпадающие списки.
Подробный пример создания 6-уровневых выпадающих списков на примере номенклатуры товаров магазина приведен в видеоуроке!
Двухуровневый выпадающий список в Excel
Имеется несколько способов создания выпадающего списка. Выбор одного из них зависит от структуры имеющихся у вас данных.
Первый способ создания двухуровнего списка
Первый способ основывается на создание «умной» таблицы, заголовок которой содержит значения первого выпадающего списка (группы), а строки таблицы соответствуют значениям второго выпадающего списка (подгруппы). Значения элементов подгруппы должны располагаться в соответствующем столбце группы, как на рисунке ниже.
Теперь приступим к созданию первого выпадающего списка группы (в моем случае — список стран):
- Выберите ячейку, в которую будете вставлять выпадающий список;
- Переходим на вкладку ленты Данные;
- Выбираем команду Проверка данных;
- В выпадающем списке выбираем значение Список;
- В поле Источник указываем следующую формулу =ДВССЫЛ(«Таблица1[#Заголовки]»).
Осталось создать второй зависимый выпадающий список – список подгрупп.
Смело повторяем 4 первых пункта описанных выше. Источником в окне Проверка данных для второго выпадающего списка будет служить формула =ДВССЫЛ(«Таблица1[«&F2&»]»). Ячейка F2 в данном случае — значение первого выпадающего списка.
Второй способ создания двухуровнего списка
Второй способ удобно применять, когда данные выпадающего списка записаны в два столбца. В первом идет наименование группы, а во втором – подгруппы.
ВАЖНО! Перед созданием зависимого списка по подгруппам необходимо отсортировать исходную таблицу по первому столбцу (столбец с группой) далее будет понятно зачем это делается.
Для создания выпадающего групп нам понадобится дополнительный столбец, содержащий уникальные значения групп из исходной таблицы. Для создания этого списка используйте функцию удаления дубликатов или воспользуйтесь командой Уникальные из надстройки VBA-Excel.
Теперь создадим выпадающий список групп. Для этого выполните 4 первых пункта из первого способа создания двухуровнего списка. В качестве Источника укажите диапазон уникальных значений групп. Тут все стандартно.
Теперь самая сложная часть — указать в Источнике динамическую ссылку на диапазон со значениями второго выпадающего списка (списка подгрупп). Решать ее будем с помощью функции СМЕЩ(ссылка, смещ_по_строкам, смещ_по_столбцам, [высота], [ширина]), которая возвращает ссылку на диапазон, отстоящий от ячейки или диапазона ячеек на заданное число строк и столбцов.
- Ссылка в нашем случае — $A$1 — верхний левый угол исходной таблицы;
- Смещ_по_строкам — ПОИСКПОЗ(F3;$A$1:$A$67;0)-1 — номер строки со значением искомой группы (в моем случае страны ячейка F3) минус единица;
- Cмещ_по_столбцам — 1 — так как нам необходим столбец с подгруппами (городами);
- [Высота] — СЧЁТЕСЛИ($A$1:$A$67;F3) — количество подгрупп в искомой группе (количество городов в стране F3);
- [Ширина] — 1 — так как это ширина нашего столбца с подгруппами.
Связанные выпадающие списки и формула массива в Excel
Итак, как сделать два связанных списка в Excel: категория, подкатегория и категория более нижнего уровня. Своими словами в данном случае нижний уровень — это «подподкатегория» если она вообще существует. Но для лучшего понимания данного обучающего материала, предположим, что существует.
Два связанных выпадающих списка с формулой массива
В любом случае, с самого начала напишем, что этот учебный материал является продолжением материала: Как сделать зависимые выпадающие списки в ячейках Excel, в котором подробно описали логику и способ создания одного из таких списков. Рекомендуем вам ознакомиться с ним, потому что здесь подробно описывается только то, как сделать тот другой связанный выпадающий список 🙂 А это то, что мы хотим получить:
- тип автомобиля: Легковой, Фургон и Внедорожник (Категория)
- производитель: Fiat, Volkswagen i Suzuki (Подкатегория) и
- модель: . немножечко их есть 🙂 (Подподкатегория)
В то же время мы имеем следующие данные:
Этот список должен быть отсортирован в следующей очередности:
Он может быть любой длины. Что еще важно: стоит добавить к нему еще два меньших списка, необходимых для Типа и Производителя, то есть к категории (первый список) и подкатегории (второй список). Эти дополнительные списки списки выглядят следующим образом:
Дело в том, что эти списки не должны иметь дубликатов записей по Типу и Производителю, находящихся в списке Моделей. Вы можете создать их с помощью инструмента «Удалить дубликаты» (например, это показано в этом видео продолжительностью около 2 минут). Когда мы это сделали, тогда .
Первый и второй связанный выпадающий список: Тип и Производитель
Для ячеек, которые должны стать раскрывающимися списками в меню «Данные» выбираем «Проверка данных» и как тип данных выбираем «Список».
Для Типа как источник данных мы просто указываем диапазон B7:B9.
Для Производителя мы уже используем формулу, которая подробно описана здесь. Она выглядит так:
Модель — описание для этой записи сделаем таким же самым образом.
Третий связывающий выпадающий список: Модель
Теперь рассмотрим, как связать выпадающий список в Excel. Поскольку Модель зависит как от Типа, так и от Производителя — значит мы будем использовать сложную формулу. После поместим ее не в проверку данных, а в именной диапазон. Соответственно проверка данных будет содержать ссылку на это имя. Предположим, мы хотим отобразить в нем легковые модели Fiat. В первом списке мы выбрали Легковой, во втором — Fiat.
Мы будем перемещать ячейку H4 на столько строк, пока не найдем позицию первого легкового Fiatа. Поэтому в колонке Тип мы должны иметь значение Легковой, а в колонке Производитель должен быть Fiat. Если бы мы использовали промежуточный столбец (это было бы отличным решением, но хотели бы показать вам что-то более крутое ;-), то мы бы искали комбинацию этих данных: Легковой Fiat. Однако у нас нет такого столбца, но мы можем создать его «на лету», другими словами, используя формулу. Набирая эту формулу, вы можете себе представить, что такой промежуточный столбец существует, и вы увидите, что будет проще 😉
Для определения положения Легковой Fiat, мы, конечно, будем использовать функцию ПОИСКПОЗ. Смотрите:
Вышеописанное означает, что мы хотим знать позицию Легкового Fiatа (отсюда и связь B4&C4). Где? В нашем воображаемом вспомогательном столбце, то есть: F5:F39&G5:G39. И здесь самая большая сложность всей формулы.
Остальное уже проще, а наибольшего внимания требует функция СЧЁТЕСЛИМН, которая проверяет, сколько есть Легковых Fiatов. В частности, она проверяет, сколько раз в списке встречаются такие записи, которые в столбце F5:F39 имеют значение Легковой, а в столбце G5:G39 — Fiat. Функция выглядит так:
А вся формула для именного диапазона раскрывающегося списка это:
Если вы планируете использовать эту формулу в нескольких ячейках — не забудьте обозначить ячейки как абсолютные ссылки!
Теперь чтобы правильно использовать данную формулу по назначению в третьем выпадающем списке нам необходимо выполнить рад последовательных действий:
- Создаем новое имя. Для этого выберите инструмент: «ФОРМУЛЫ»-«Определенные имена»-«Диспетчер имен»-«Создать».
- При создании имени в поле «Имя:» вводим слово – модель, а в поле «Диапазон:» вводим выше указанную формулу и нажимаем на всех открытых диалоговых окнах ОК:
- Перейдите на ячейку D4 чтобы там создать выпадающий список, в котором на этот раз в поле ввода «Источник:» следует указать ссылку на выше созданное имя с формулой =модель.
Когда вы перейдете в меню «Данные», «Проверка данных» и выберите как Тип данных «список», а в поле «Источник» вставьте не саму формулу, а ссылку на имя «=модель» именного диапазона с этой формулой. Такой подход обеспечит стабильность работы третьего выпадающего списка.
Связанные выпадающие списки
Связанные выпадающие списки.xls (216,5 KiB, 1 364 скачиваний)
Чтобы понять о чем пойдет речь в статье сначала необходимо понимать что такое выпадающий список и как его создать. Теперь попробуем разобраться что значит выражение «связанный выпадающий список». Я бы еще назвал такой список зависимым. Т.е. когда список значений одного выпадающего списка зависит от значения, выбранного в другом выпадающем списке или просто забитого в ячейку. Представим ситуацию: есть ячейка А2 . В ней создан выпадающий список со значениями: Овощи, Фрукты, Мясо, Напитки . А в ячейке В2 нам нужен такой список, чтобы значения этого самого списка изменялись в зависимости от того, какое значение мы укажем в ячейке А2 — т.е. список выбранной категории продуктов. Например выбрали в А2 значение Овощи — в В2 появился выпадающий список, содержащий значения: Морковь, Капуста, Картошка, Редиска, Помидоры. Выбрали в А2 Мясо — в В2 появился выпадающий список, содержащий значения: Говядина, Телятина, Свинина, Курица, Индейка . И т.д.
Подготовка
Для начала нам потребуется создать все эти списки. Что-то вроде этого:
Далее для каждого из этих списков необходимо назначить именованный диапазон. Создать можно любым способом из описанных в этой статье. Главное помнить — если сами списки расположено на листе, отличном от того, на котором списки выпадающие — то обязательно создавать именованный диапазон с назначением области действия — Книга.
В приложенном к статье примере диапазоны имеют имена категорий — их можно видеть в заголовках.
Если ваши категории содержат пробел — необходимо заменить его на нижнее подчеркивание (_) или удалить, т.к. в качестве именованного диапазона такое значение не подойдет и ничего в результате не получится.
Создание зависимых списков
В ячейке А2 создаем «список списков» — основной список, на основании значений которого будет создаваться второй список. Этот список может быть создан любым способом (как создать выпадающий список). Назовем его Список категорий.
В ячейке В2 потребуется создать список на основании формулы, хоть по сути и так же, как и остальные: вкладка Данные (Data) —Проверка данных (Data validation) —Список (List) . Но теперь вместо прямого указания имени списка необходимо указать ссылку на именованный диапазон, который мы выберем в Списке категорий(ячейка А2 ), на основании его имени. В этом нам поможет функция ДВССЫЛ (INDIRECT) . Просто записываем эту формулу в поле Источник (Source) : =ДВССЫЛ( $A2 )
На что обратить внимание: если вы планируете распространять такой список на столбец, то ссылка должна выглядеть именно так: $A2. Перед цифрой не должно быть знака доллара ($A$2 — неправильно). Иначе зависимый список будет всегда формироваться исключительно на основании значении ячейки А2.
Источник из другой книги
Сами списки товара могут находится и в другой книге. Если книга называется Книга со списком.xls и на Лист1 в ячейке А1 в этой книге находится имя нужного нам списка, то формула будет выглядеть так:
=ДВССЫЛ(«‘[Книга со списком.xls]Лист1’!»&$A$1)
На что обратить внимание: лучше всегда перед именем книги и после имени листа ставить апостроф — ‘. Так вы избежите проблем и недопонимания, если имя листа или книги содержит пробелы и иные специфические символы. В отличии от списков внутри одной книги в данном случае знак доллара должен быть и перед буквой и перед цифрой. В ином случае возможны ошибки (если, конечно, это не было сделано специально с пониманием того, что делалось).
Ограничения : данный способ создания списков хорош, но не обошлось и без ложки дегтя. Даже двух:
- обе книги должны быть открыты. Если вы закроете книгу со списками, то получите ошибку — выпадающие списки просто перестанут работать
- созданные подобным образом связанные списки не будут работать с динамическими именованными диапазонами
И ничего с этими ограничениями не поделать при подобном подходе.
Tips_Lists_Connect_Validation.xls (26,5 KiB, 16 309 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Поиск по меткам
Здравствуйте!
В связанных списках для заголовков одной таблицы использую ДВССЫЛ таким образом =ДВССЫЛ(«Таблица[#Заголовки]»), дабы при добавлении нового столбца или изменении заголовков в динамической таблице автоматом отображались данные изменения и добавления.
Но в некоторых случаях происходит некое зависание, данный список не раскрывается, он будто не видит данных которые необходимо отобразить.
Подскажите в чем может быть причина?
Поделитесь своим мнением
Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме — добро пожаловать на Форум
Зависимые выпадающие списки в Excel
Изучим простой способ создания зависимых (также называют связанных) выпадающих списков в Excel.
Для начала поясним, что же такое связанные выпадающие списки.
Это 2 выпадающих списка, при этом список значений одного из выпадающих списков зависит от выбора значения в другом выпадающем списке. Создать по отдельности выпадающие списки не представляет сложностей, но и связать выпадающие списки можно достаточно просто.
Для наглядности рассмотрим следующую ситуацию: у нас есть несколько категорий блюд, например, пицца, суши и паста, а также виды блюд в каждой категории (пицца Пепперони, суши Филадельфия, паста Феттучини и т.д.):
В результате мы хотим получить своеобразный двухуровневый зависимый выпадающий список: на первом уровне (списке) — категории блюд, на втором — блюда из выбранной категории.
Как сделать зависимые выпадающие списки?
В основе создания связанных выпадающих списков лежит применение функции ДВССЫЛ, которая позволяет преобразовывать текст из ячейки в ссылку.
Другими словами, если в ячейку введено текстовое значение «А1», то функция ДВССЫЛ вернет ссылку на ячейку А1.
Теперь зададим имена диапазонам состоящим из всех видов блюд каждой конкретной категории.
Для этого в панели вкладок выбираем Формулы -> Определенные имена -> Присвоить имя:
Выделяем диапазон ячеек A2:A6 и создаем диапазон с именем Пицца, аналогичные действия повторяем и для списков с суши (имя диапазона — Суши) и пастой (имя диапазона — Паста):
Обратите внимание, что при создании имен диапазонов имя не должно включать в себя пробелы.
В том случае если в названии категории все же содержится пробел (например, Японская кухня), то одним из вариантов решения является использование нижнего подчеркивания вместо пробела в имени диапазона (Японская_кухня).
Создадим первый выпадающий список в ячейке A10, состоящий из категорий блюд (Пицца, Суши и Паста). В панели вкладок выбираем Данные -> Работа с данными -> Проверка данных, указываем тип данных Список и в качестве источника выделяем диапазон A1:C1:
Теперь создаем второй выпадающий список, полностью повторяем действия с созданием первого списка, только в поле Источник записываем формулу =ДВССЫЛ(A10):
Имена созданных диапазонов обязательно должны совпадать с элементами первого списка, поэтому если в первом списке есть категории содержащие пробелы, то при обращении к имени диапазона необходимо заменить пробелы на нижние подчеркивания.
Это можно осуществить с помощью функции ПОДСТАВИТЬ, которая позволяет заменить старый текст (пробел) на новый текст (нижнее подчеркивание) в текстовой строке, т.е. в нашем случае формула примет вид =ДВССЫЛ(ПОДСТАВИТЬ(A10;» «;»_»)).
Также минусом данного способа создания списков является невозможность использования динамических именованных диапазонов.
Подробно ознакомиться с примером зависимых выпадающих списков — скачать пример.
Многоуровневый (3+) связанный список (типа предок-родитель) в MS EXCEL
Смотрите также для ВПР порядок ПОИСК() ИНДЕКС+ПОИСКПОЗ() и,: Пишите так: генерится через отрицании конкретных возможностей VBA. А формулами бился над аналогичной
легче(а я так1B6. Формула вернет порядковыйНаложим ограничение на порядок столбце В
- – ячейки А2:А4
- Чтобы добавить новое значение, нужно производить следующим
Для сложных иерархических структур следования данных не наверное возможны еще01PivotTable Excel. При задействовании только иногда «балуюсь» задачей и не
чувствую и изящнее)…и опять балдеем: номер выбранного Региона.
Решение
заполнения перечней стран. должны совпадать с
например, новую Страну
образом:
с тремя и
важен. варианты01.01. n-количества доп. столбцов чуть-чуть. придумал ничего лучше меня.1.30 Чад, Танзания… Опять Он же является для Регионов наЭто второй уровень ячейками В1:D1). с городами иСтолбец Номер уровня содержит
более уровнями создадимВы просто гений!!!!!!SerenDion01.02Единственное техническое ограничение или при «выстреле»
А надо бы чем для каждогоЕсли уж никто1.30.1 без пустых строк.
порядковым номером столбца,
листе Списки. Теперь выпадающих списков.Если наименований много, улицами, нужно добавить числовые коды уровней. Многоуровневый связанный список все заработало!!!!!!!!!!!: на 1 листеи т.д.
— в строке какой-то идеи решается подправить что-то в уровня вложения создать из Гуру формул1.30.1.1
А теперь – основное содержащим названия стран, порядок расположения названийВнимание!
то столбец можно в таблицу на
Самый верхний уровень типа Предок-Родитель. ТеперьОгромное спасибо!!!
- есть таблица, вSerenDion списка не должно то, что раньше формуле, т.к. при отдельный скрытый служебный
- не откликтнется…1.30.1.1.1 отличие от Связанного
- выбранного Региона в Регионов в столбцеПеред тем, как транспонировать в строку. листе Списки нужное (0) содержит название структуры типа: Регион-Страна-Город-Улица[/QUOTE] первом столбце как: есть унифицированная форма, быть пустых ячеек считалось невозможным. Как изменении уровня вложенности, столбец. А вEducatedFool1.30.1.1.2
Как работает эта формула?
списка: для добавления строкеA устанавливать выпадающие списки Как это сделать,
- количество строк. Чтобы Регионов. Можно создать можно создавать вZVI раз номера многоуровневого где без ноликов между заполненными. у фантастов. Люблю
- например, в строке видимом начальству столбце: Может, всё-таки, воспользоваться1.30.1.1.3
- новых Регионов и1в точности должен в столбце В, смотрите в статье не исправлять формулу,
любое количество уровней; MS EXCEL.: Добавил макрос и списка. таблица большая. нумерация. с нолями
Имеется мелкий изъян: фантастику :) 6 с уровень3 многоуровневый список делался
Word-ом?
1.30.1.1.4
их Стран теперь
- . соответствовать порядку заголовков выберите в первой
- «Как поменять местами строки следует добавлять,Столбец Родитель содержит названияВ статье Многоуровневый связанный список
- кнопочки для требуемой на 2 лист и у меня номер выбранного пункта
- Haken на уровень2, дальше формулам =СЦЕПИТЬ(…)Для него подобная1.30.1.1.5 достаточно ввести новыйСоздадим именованную константу МаксСтран перечней Стран в верхней ячейке столбца столбцы и строки
- вставляя их между из столбца Потомок в MS EXCEL мы
сортировки хочу вывести только все корректно. может оказаться больше, мысль с прописыванием сбивается нумерация из-заAlex_ST нумерация — родная.1.30.1.1.6 Регион в столбец равную 20. Константа
строке А любое значение. в Excel» тут. уже существующими строками. более верхнего уровня; уже создавали многоуровневыйSerenDion 3 столбца. тоСпасибо за ответ) длины списка при уровней понравилась. «проглатывания» разделителя (точки).: Вот, что-то типаИ уровень заголовков1.30.1.1.7A
соответствует максимальному количеству1 Главное, чтобы этаКак настроить Excel,Теперь представим ситуацию, чтоСтолбец Потомок связывает значений список. Но, у: Спасибо всем большое!!!!!!
excel2.ru
Связанные выпадающие списки в Excel.
есть ввожу номер(изSerenDion новом выборе вКозина О.В. Ясно, что где-то этого. можно менять нажатием1.30.1.1.8(лист стран в регионе(в предыдущем случае, ячейка не была чтобы при добавлении после заполнения таблицы из 2-х соседних
того списка былоheaven33rus столбца А) и: А без подстановки
вышестоящем меню.: Haken огромное спасибо. маленькая ошибка вТолько надо с одной комбинации клавиш.1.30.1.1.9Списки (константу мы устанавливаем см. статью Связанный пустой. У нас ячеек в список с помощью выпадающих уровней. Нужно иметь 2 недостатка:
: Приветствую. хочу чтоб выводились нулей есть варианты?Если выбрать, например, Мне бы такая формуле, но где?… формулами скрытых столбцовВ случае с
1.30.1.1.10), в строке
произвольно).
список, этого не – это ячейка столбца A, автоматически списков, было изменено ввиду, что еслислишком сложные формулы;Решил сделать калькулятор значения из определенных(заданных)Z сначала
реализация даже втухачевский помудрить чтобы пересчитывались Excel (где нет1.30.1.21Создадим Именованный диапазон Выбранный_Регион требовалось, главное, чтобы
А2. писалось название нового значение ячейки мы начали заполнять,максимальное количество уровней - для подсчета стоимости столбцов, из строки,: Все перечислять?! СКредитный инспектор (стройка) (2)
голову не пришла.: Алекс, при удалении/добавлении пунктов. возможности менять уровень1.30.1.2.1автоматически отобразится соответствующий для определения диапазона все названия РегионовВыделяем диапазон в
столбца, смотрите вС10 например, все страны 3. технических мероприятий. соответствующей этому номеру. доп полями, макросом…
из Вот уж действительно не понял, что
Козина О.В. без применения макроса)1.30.1.2.2 заголовок. Под появившимся на листе присутствовали в заголовках, столбце В (у статье «Как добавить. Например, вместо США Америки, то нужноПредлагаемое ниже решение лишеноИспользовал многоуровневые выпадающието есть ВПРЮрий М
Отдел/сектор финансирования … — век живи, подправить: Если что-то должно возникает вопрос:1.30.1.2.3 заголовком в строкеСписки а порядок был нас – это столбец в Excel выберем Мексика. Естественно,
полностью закончить этот этих недостатков, но списки, получилось 5 как раз подходит,
: Вариант: параллельный столбец, а потом изменить век учись.Козина О.В. быть удалено, токак формулы должна1.30.1.2.41, содержащего страны выбранного не важен). В2:В3). Снова через
автоматически». значение в ячейке список, затем переходить исходный список, содержащий
уровней. еслиб не этот и сортировка уже отдел наGuest: Интересно, а если
только вместе с
нумеровать оставшиеся после1.30.1.2.5введите страны нового Региона: =СМЕЩ(списки!$A$2;;Позиция;МаксСтран).Для обеспечения этого требования функцию «Проверка данных»Как сделать в ExcelD10 к следующему региону. названия стран, городовзагрузить свой рабочий
многоуровневый список……. по нему.Отдел кредитования: ложка дегтя: согласно воспользоваться word, можно «подработами», например, если удаления строки?1.30.1.3 Региона. И все!Теперь, например, при
введем в ячейку выбираем «Тип данных» динамический диапазонне изменится (в Выполнение этого требования и улиц получается
вариант так иDEAD MANSerenDion, то в последнем инструкции по делопроизводству ли в нем удаляем 1.30.1, тоВозьмём ваш пример1.30.1.3.1Частными случаями Связанного списка выборе региона АмерикаB1 – список. А- чтобы размер
ней останется один необходимо для правильной немного громоздким и не смог, много: А в чем
: В общем это меню появляются лишние индекс пункта должен сделать простейшую арифметику. также я удалю — а именно1.30.1.3.2 являются:
функция СМЕЩ() вернетлиста в строке «Источник» диапазонов списков при
из городов США). работы вышеуказанной формулы. его нужно наполнять весит и облегчить проблема сделать, как вспомогательная задача, необходимая строки.
excel-office.ru
Расширяемый Связанный список в MS EXCEL
заканчиваться точкой Я давно встречала
и подработы. эти строки:1.30.1.3.3Динамический выпадающий список: в ссылку на диапазонСписки пишем такую формулу добавлении или убавлении Чтобы подсказать пользователю Выпадающие списки формируются придерживаясь определенных правил. не вышло, сторонние советовали выше, дополнительный для решения другой))))
Может, кто придумает,vikttur такой макрос, чтобыА далее идёт1.301.30.1.3.4 этой структуре перечень списки!$B$2:$B$20, содержащего всеформулу =ДВССЫЛ(А2) ячеек менялся автоматически, об ошибке, используем именно из этогоВ результате мы должны ссылки удаляются столбец для сортировки поэтому параллельный столбец как от этого: Была бы идея в wordе можно
работа 1.30.2, которая1.30.11.30.1.4 элементов для выпадающего страны этого Региона.=ДВССЫЛ(АДРЕС(СТРОКА($A$1)-СТОЛБЕЦ($A$1)+СТОЛБЕЦ();1))
Этой формулой мы говорим
смотрите в статье Условное форматирование. столбца. получить вот такойСделал заготовку, без и скрыть его?
ооочень все усложнит. избавиться. (спасибо Haken’у), а было складывать. Но после удаления выписанных1.30.1.11.30.1.5
списка только один,В принципе, можно вТеперь названия заголовков столбцов Excel, что список «Чтобы размер таблицы
- Формула в правиле УсловногоРассмотрим как формируется выпадающий 4-х уровневый связанный
- моего видения. Не могу понять,
- если я правильноnerv
точек можно наставить.
- сейчас его найти
работ должна переименоваться1.30.1.1.11.30.1.6 но его содержание качестве источника Связанного будут автоматически браться нужно показывать, в Excel менялся автоматически». форматирования ищет в список в ячейке список:Теперь вопросы: чем это усложнить поняла, вы предлагаете: Это что-то вродеУточните, индекс первого не могу. в 1.30.1, и1.30.1.1.2
1.30.1.7 зависит от значений списка для ячеек из столбца зависимости от значенияТеперь нужно присвоить таблице на листеB8 Выпадающие списки будем формироватьНужны связанные списки:1. работу с таблицей? второй уровень списка древовидного списка? уровня тоже долженAlex_ST соответственно работы 1.30.2.1,1.30.1.1.31.30.1.8 нескольких ячеек. Эта из столбцаА в ячейке столбца
имена всем этим Списки пару Родитель-Потомок.на листе Таблица (заполняем с помощью одной Выбор предприятия-2. необходимостьSerenDion
в параллельный столбецФормуляр быть с точкой(1.)?: Прошу прощения за 1.30.2.2 и 1.30.2.31.30.1.1.4
1.30.1.8.1 структура позволяет исключатьBи однозначно соответствовать А. спискам. У нас
Если такая пара Регионы). большой Именованной формулы: строительство(да/нет)-3. объем строительства-4.: Z , спасибо поместить?: Ну да, можнотухачевский долгое молчание. Какая-то переименуются в 1.30.1.1,теперь представим, что1.30.1.8.1.1 из выпадающего спискана листе названиям Регионов.Здесь все просто. в списках четыре не найдена, тоВыражение ЕСЛИ(Таблица!B$7=Списки!$F$5; проверяет заполняем
=ЕСЛИ(Таблица!B$7=Списки!$F$5;
Тип объекта строительства-5. за орфографический ликбез.»Все перечислять?! С и так сказать.: точки д/б везде
проблема возникла с 1.30.1.2 и 1.30.1.3. вы вручную удалили1.30.1.8.1.2 уже введенные значения,Таблица
- Модифицируем файл примера из Но бывает название диапазона (четыре столбца).
- ячейка выделяется красной
- ли мы столбец
- СМЕЩ(Списки!$D$4;1;0;СЧЁТЕСЛИ(Списки!$B$5:$B$30;0)); объект строительства.
Z доп полями, макросом…nervа идея замечательная выкладыванием файлов… ПопробуюЯ ответила на эти строки:1.30.1.8.1.3 что обеспечивает гарантированныйуказать =Выбранный_Регион, но статьи Связанный список. диапазона (столбца) состоит Легко и быстро заливкой. Регионы (самый верхний
СМЕЩ(Списки!$D$4;ПОИСКПОЗ(Таблица!A8;Списки!$C$5:$C$30;0);0;СЧЁТЕСЛИ(Списки!$C$5:$C$30;Таблица!A8)))И главный вопрос,: Похоже на новую «: А по другомудобавил ложку меда: словами. Ваш вопрос?1.30.11.30.1.8.1.4
ввод неповторяющихся значений. тогдав Выпадающем списке Сначала удалим через из нескольких слов. сделать так.Выпадающие списки в Excel уровень с номеромЭту формулу можно посмотреть вся стройка должна тему, и, покатак много вариантов?!! «дерево» не как при удалении строкитухачевский,По поводу уровней:1.30.1.11.30.1.8.2Вложенный связанный список: в
будут появляться пустые Диспетчер имен (Формулы/
- Например, «Зимние пальто».Как присвоить имя диапазонубывают разные. Есть 0) или нет. через Диспетчер имен (имя быть разделена на вас не забодали, подскажите самый простой, не реализовать (хотя не нужно перепрописыватьпопробуйте вместо [I6]=»», мне дают готовый
- 1.30.1.1.11.30.1.8.2.1 этой структуре все строки. Для исключения Определенные имена/ Диспетчер А в имени в простой В данном случае формулы — Выбор), 2 группы, при рекомендую присмотреться к пожалуйста)) бы теоретически)? А столбец [J6]=1 сделать [I6]=1, список работ, где
- 1.30.1.1.21.30.1.8.2.2 перечни элементов для этих строк, наконец, имен) все созданные диапазона нельзя ставитьExcel.раскрывающийся список Excel в выражение вернет значение но так как выборе Предприятия 01 расширенному фильтру илиZ то мне судяHaken [J6]=»» (т.е. повысить указаны основные этапыТо есть, осталось1.30.1.8.2.3
excel2.ru
Многоуровневая нумерация в excel
выпадающего списка содержатся создадим последнюю Именованную ранее Имена. пробел. Имя диапазонаВыделяем диапазон ячеек ячейке ИСТИНА; формула использует относительную и вторая группа сводной, как варианты…: Он у вас по всему скоро: Рад, что моя
уровень строки 6)
(цветом, шрифтом…), крупные
вот что:
1.30.1.8.3
в одном столбце,
формулу Страны для
Создадим Динамический диапазон для
напишем так «Зимние_пальто».
всех списков сразу
. Есть
Так как предыдущее выражение
адресацию в ссылках
для всех остальных,
SerenDion
есть — вами
потребуется…
идея понравилась.
и увидите, что
этапы, подэтапы, работы
1.30
1.30.1.8.4
а не в
более точного определения
формирования Выпадающего (раскрывающегося)
Но формула ДВССЫЛ
вместе с шапкой
многоуровневые зависимые выпадающие списки
=ИСТИНА, то работает
на ячейки Таблица!B$7 и Таблица!A8,
т.е. какое то
: тогда, как я
придуманный — с
Формуляр
Чтобы везде в
нумерация в строках
и т.д. Нумерацию
1.30.1.1.3
1.30.1.9
разных, как в
диапазона на листе
списка содержащего названия
не найдет этот
таблицы списков –
в Excel
первое условие функции
то для ее
разделение на этапе
понимаю, на лист
«0» впереди…
: С многоуровневыми рубрикаторами,
конце была точка,
7 и 8
я делаю уже
1.30.1.1.4
1.30.1.10
обычном связанном списке.
Списки Регионов. Для этого диапазон. Тогда формулу у нас это
. Это, когда, в ЕСЛИ(), т.е. выражение СМЕЩ(Списки!$D$4;1;0;СЧЁТЕСЛИ(Списки!$B$5:$B$30;0))
просмотра нужно предварительно выбора предприятия или 2 нужно вводитьSerenDion списками и анкетами можно поставить формат нарушится.
сама вручную. АИ как должна1.30.1.11
Значения в этом, содержащего страны выбранного необходимо: нужно написать так.
диапазон А1:D4. На зависимости от выбранныхфункция СМЕЩ() выбирает из выделить ячейку что то такое. номера из доп: смысл в том, мне работать приходится ячеек «@.» (безAlex_ST потом иногда получается, восстановиться нумерация? Вариантов1.30.1.12 столбце должны быть
Региона:нажать кнопку меню «Присвоить =ДВССЫЛ(ПОДСТАВИТЬ(A2;» «;»_»))
закладке «Формулы» в данных в первом столбца D (Потомки)
В8P.S. Сереньким слева
столбца? что моя таблица регулярно.
кавычек) :): А по поводу что мне говорят: восстановления множество…1.30.2
отсортированы. Пример: список =СМЕЩ(списки!$A$2;;Позиция;СЧЁТЗ(Выбранный_Регион)) имя» (Формулы/ Определенные
Если список на разделе «Определенные имена» столбце выпадающего списка,
все значения, у
на листе Таблица.
пример, того, как
DEAD MAN
очень громоздкая, и
Пока ничего (без
Сейчас пытаюсь доработать,
Word’a, Оксана, попробуйте «А давай этотKuklP
1.30.2.1
сотрудников компании, отсортированный
Теперь через Диспетчер имен
имена/ Присвоить имя);
другом листе, то нажимаем функцию «Создать
меняется выпадающий список
которых уровень равен
О том как
оно должно в: Без примера сложно уровней у списка
макросов) проще и чтобы нумерации любого конечно, но вряд подэтап уберём» -
: ДА, так гораздо1.30.2.2 в алфавитном порядке. (Формулы/ Определенные имена/
в поле Имя ввести в формуле указываем из выделенного фрагмента». в ячейках второго
0. Из этих работает эта формула итоге выглядеть.
ответить, поскольку не аж 4. с
удобней не придумал уровня и количества ли сможете получить какой-нибудь из начала изящнее! EducatedFool респект!1.30.2.3
Перечень элементов для Диспетчер имен) можно Регионы; название этого листа. В появившемся диалоговом столбца, третьего, т.д. значений формируется выпадающий список. см. в разделеСпасибо. видно что там нулями она очень и не нашёл. работали правильно :) что-нибудь приемлемое.
списка, и всю Кто больше?1.30.3 выпадающего списка формируется посмотреть все созданныев поле Диапазон ввести Напишем так. =ДВССЫЛ(»Размеры!А2:А4») окне оставляем галочкуЗдесь разберёмРассмотрим как формируется выпадающий список в статьи ниже. heaven33rus
к чему. похожа на двоичныеА в каком
Haken»Word и таблицы нумерацию приходится перебиватьКозина О.В., Ваш
1.30.3.1 в зависимости от выше Имена. формулуНажимаем «ОК». Теперь только у строкидвухуровневый зависимый выпадающий список ячейке
ПРИМЕЧАНИЕ: Исправил файл иДля примера, я коды и совсем смысле «по-другому»?: Вот :) — не совместимы» вручную. пример(в соответствии с
1.30.3.2 выбранной буквы алфавита.
Наконец сформируем выпадающий список=списки!$A$2:ИНДЕКС(списки!$A:$A;СЧЁТЗ(списки!$A:$A)) во втором столбце «В строке выше». в ExcelС8 : Функция ЕСЛИ() нужна для формирования более точно написал как-то делал файл, нечитаема. и этоnervвыбирайте, кому с (в смысле какПрилагаю файлик с правилами форума) сильно1.31Запрос на выборку: в
(связанный список) дляНажать ОК. установлены выпадающие списки,Нажимаем «ОК». Всё, имена.на листе Таблица (заполняем списка самого верхнего что должно получиться.
в котором необходимо еще бы ничего,: Чтобы было дерево) точкой, кому без гений и злодейство…) одним из проектов ускорит решение.1.32 этой структуре все
ячеек из столбцаФормула =списки!$A$2:ИНДЕКС(списки!$A:$A;СЧЁТЗ(списки!$A:$A)) подсчитывает количество которые меняются, в
присвоены. На закладкеНапример, в первом Страны).
уровня иерархии -heaven33rus
было сгруппировать данные но есть требование
SerenDion точки, кому формулами,Там, конечно, можно с готовой нумерациейviktturKuklP перечни элементов для Страна налисте введенных Регионов в
зависимости от того, «Формулы» нажимаем функцию столбце из выпадающегоВ этом случае формула у него нет: Посмотрите, кто разбирается по строкам в к оформлению….(((: Всем доброго времени кому макросами :) делать таблицы и (там мне сказали,
: >>Наверняка спецы типа: Это мы не
связанного списка содержатсяТаблица
столбце что написано в «Диспетчер имен». списка выбрали «Пальто». будет несколько другая, Родителя. в многоуровневых списках. пять уровней иSerenDion суток. Очень нужнаПрошу обратить внимание
какие-то простейшие вычисления, возможно придётся убрать Kim, vikttur заинтересуются с Олечкой Козиной в одной таблице.
А
ячейках первого столбца.Здесь перечислены все наши Во втором столбце т.к. в нейДля ввода формулы выделитеСделал, как мне столбцы по периодам.: Может я с
помощь. Создаю многоуровневый на различие обработки но ВСЁ НАСТОЛЬКО пункт 1.3 (то Вашей задачей. общаемся? Сергей Пилипенко.
(в базе данных).выделяем диапазонна листе Получилось так.
диапазоны списков. Проверили появился выпадающий список сработают относительные ссылки: ячейку надо было, но
В итоге, решил другой стороны подойду).
список
с помощью формул
КОРЯВО!!!
есть строки с
за «спецов» спасибо.Козина О.В. Сам связанный списокB5:B22
СпискиКопируем формулу вниз по всё. Можно подкорректировать размеров этого пальто.=ЕСЛИ(Таблица!C$7=Списки!$F$5;B8
на 4 уровне с помощью сводной Может подскажите функцию
1.1 и польз.функции. «ошибки»тухачевский
12-ой по 22-ую). Приятно, хотя и: Это Оксаночка )))) реализован не в;(функция СЧЁТЗ()) и столбцу. Мы создали размер диапазона. Мы А, если вСМЕЩ(Списки!$D$4;1;0;СЧЁТЕСЛИ(Списки!$B$5:$B$30;0));, вызовите Диспетчер имен, и в выпадающем списке таблицы, а таблица
аналогичную ВПР, но1.2 при перескоке с
: Алекс,Козина О.В. не спец :)KuklP виде выпадающего списка,вызываем инструмент Проверка данных, определяет ссылку на двухуровневый выпадающий список
уменьшили размер диапазона первом столбце этойСМЕЩ(Списки!$D$4;ПОИСКПОЗ(Таблица!B8;Списки!$C$5:$C$30;0);0;СЧЁТЕСЛИ(Списки!$C$5:$C$30;Таблица!B8))) введите формулу: появляется только одно
с данными содержала для которой непринципиальна. уровня на уровень
спасибо: Алексей, спасибо огромноеНо для формулистов
: Козина О.В., подождите, а формулами на
устанавливаем тип данных Список,
последний элемент в в Excel. «Юбка», чтобы в же ячейки из
Выражение ЕСЛИ(Таблица!С$7=Списки!$F$5; в данном случаеНажмите ОК. значение из трех.
следующие столбцы: Период/Уровень сортировка в столбце. больше чем напоправил
за пример. Что задача неинтересна. пожалуйста. Наверняка спецы листе EXCEL. Пользователь
в поле Источник вводим: столбце (функция ИНДЕКС()),
Другой способ сделать выпадающем списке не выпадающего списка выбрали выражение вернет значение
Опять выделите ячейку Я где-то ошибся 1/Уровень 2/Уровень 3/Уровень по возрастанию?1.9 1 в бОльшуюно: то подобное сделалаМнение по задаче типа Kim, vikttur
задает в определенной =Страны. тем самым формируется связанный выпадающий список было пустой строки.
planetaexcel.ru
Выбор из многоуровневого списка (на примере штатного расписания)
«Брюки», то во ЛОЖЬ;B8 или в таких
4/Уровень 5/План/Факт/Отклонение.Юрий М1.10 сторону (внизу выделено
уровень перескакивать нельзя и я. Просто — макрос с заинтересуются Вашей задачей. ячейке критерий, наТестируем. Выбираем с помощью диапазон, содержащий все в Excel, смотритеТеперь устанавливаем
втором столбце будетТак как предыдущее выражение, сформируйте выпадающий список вещах надо использоватьВладимир
: Тогда сформулируйте конечную2.1 желтым)Haken я подумала, может таким, наверное, справится
Или Вас интересует основе которого из выпадающего списка в значения Регионов. Пропуски в статье «Какпервый выпадающий список в выпадающий список с =ЛОЖЬ, то работает на основе Проверки кардинально другой подход?: Настраиваемую сортировку пробовали?
задачу.и т.дКонечно, при наличии
: Я как-то недавно есть способ как — отслеживание последней
решение в ВБА? базы данных выбираются ячейке
в столбце сделать связанные выпадающие ячейки столбца А размерами брюк. второе условие функции ЕСЛИ(), данных. В полеkim Прикрепленные файлы настраиваемая
Zвсе хорошо, пока «до 900 работ делал упрощенную версию это сделать без
измененной ячейки иКозина О.В. строки, удовлетворяющие этомуA5
А списки в Excel
.Итак, сделаем две
excelworld.ru
Многоуровневый список, сортировка по возрастанию
т.е. выражение СМЕЩ(Списки!$D$4;ПОИСКПОЗ(Таблица!B8;Списки!$C$5:$C$30;0);0;СЧЁТЕСЛИ(Списки!$C$5:$C$30;Таблица!B8)) Тип данных укажите: Может так подойдет… сортировка.jpg (70.57 КБ): -
не делаю сортировку…
всех уровней» быстрее
для себя.
создания дополнительных столбцов.
пересчет нумерации.
: Сергей, меня заинтересует
критерию. Выбранные строки
Регион – Америка,
не допускаются. Также легко».
У нас, в
таблицы. Саму таблицу
функция СМЕЩ() выбирает из столбца D
Список, в поле
heaven33rus
Владимир
Igor67
результат будет обычными формуламиНедостатки: максимальное количествоGuestДля формул задача любое решение.
помещаются в отдельную вызываем связанный список
для формирования динамическогоВ статье рассмотрен улучшенный
примере, мы выделяем
сделаем на странице
(Потомки) все значения,
Источник введите формулу
: а как сделали,: Прошу прощения. С:1.1 обсчитываться подпунктов — 9
: интересно как это
непосильна. Нарисовать формулуМихаил С. таблицу.
в ячейке диапазона можно использовать вариант Связанного списка.
диапазон A2:A3. И, книги «Таблица». А у которых Родитель =Выбор.
подскажете? на будущее? 1.10 тоже неSerenDion,1.10Формуляр (т.е. нумерация после без доп столбцов для последовательности от: А как определить,Козина О.В.B5
функцию СМЕЩ().В случае, если содержание Связанного через «Проверки данных»
списки сделаем на = Америка. С помощью Маркера заполнения
kim получается..а Вы используете1.2: Выбор реализован через
10 на любоммашина без пользователя 1 до, например, сколько уровней в: Подскажите пожалуйста каки балдеем –Теперь создадим Именованную формулу списка зависит от на закладке «Данные», странице «Размеры». УДля этого выражение ПОИСКПОЗ(Таблица!B8;Списки!$C$5:$C$30;0) возвращает номер скопируйте ячейку вправо: А что там
SerenDion ВПР по неточному. несколько листбоксов со уровне будет неправильно не назначит правильно 30.30.30.30.30.30 не проблема, каждом случае?
в Excel можно появился список стран Позиция для определения
большого количества значений устанавливаем выпадающие списки.
нас есть такая позиции первой ячейки и вниз (или подсказывать? Просто подрихтовал: Вот пример. на соответствию с параметром. связанными списками. работать) уровень если последовательность непрерывнаKuklP сделать нумерацию (этапов, для Региона Америка: позиции, выбранного пользователем ячеек (>5), то Тип данных – таблица. в столбце Родитель,
вверх и вправо): выпадающие некоторые формулы и скорую руку. ИСТИНА? Если Выи т.д.Исходный список наПри удалении/добавлении строку меня как-то или есть какой-либо: Оксаночка, я рад подэтапов и работ) США, Мексика… В региона, в созданном нам потребуется создать выбираем «Список». А
И мы сделали такие содержащей значение Америка. списки всех уровней будут ссылки в Вашем
SerenDion ищите точное соответствиепредполагаю, что дело листе нужно протянуть формулу так алгоритм изменения уровней/подуровней. буду Вам помочь, чтобы в случае
отличие от Связанного выше диапазоне Регионы такое же количество
в строке «Источник» списки. Это позиция номер сформированы автоматически. диспетчере имен. Зайдите: Igor67 пишет: и указываете параметр
в неверном форматеШР заново по столбцуAlex_ST В показанном примере НО! На форуме
удаления одной из списка – без =ПОИСКПОЗ(A5;Регионы;0). Т.к. в Именованных диапазонов. Занятие указываем имя диапазона.
Внимание! 4. Именно сНаполнять выпадающие списки будем туда, все увидите.SerenDion, а Вы ЛОЖЬ, то для данных. но какой.В самую первую: Да, здОрово! разное количество вложений, есть УМНИЧКИ, не строк нумерация пересчитывалась пустых строк.
формуле использована относительная это мало увлекательное, Например, «=Наименование_товара».В списках названия
этой позиции, но из таблицы на Кстати, списки Ваши используете ВПР по
ВПР порядок следования формат выбрать, чтобИсходная структура хороша
строчку нужно вручнуюТакие сложные формулы,
да еще «в до конца перечисленные заново! Нумерация возможнаТеперь заполняем следующую строку. адресация, то важно поэтому лучше настроимПодробнее, как установить столбцов (В, С, из другого столбца, листе Списки (см.
ни какие не неточному соответствию с
данных не важен.
сортировалось корректно ума
тем, что не вбить цифру 1. да ещё и случае удаления одной
мной(типа Kim, vikttur, до 6 уровней
planetaexcel.ru
Калькулятор на основе многоуровневых выпадающих списков (Формулы/Formulas)
Выбираем в ячейке перед созданием формулы
Связанный список так, выпадающий список, смотрите D) должны полностью
будет формироваться наш выпадающий файл примера): четырехуровневые или пятиуровневые,
параметром ИСТИНА? Если Это ограничение когда не приложу. содержит дублирующихся наименованийvikttur формулы массива, для
из строк нумерация ну не всех
(1.1.1.1.1.1) и всего
A6 сделать активной ячейку чтобы для него в статье «Выпадающий совпадать с названием
список;Для наглядности различные уровни а обычные двухуровневые Вы ищите точное Вам нужно найтиЮрий М и удобна для: В который раз меня, к сожалению, пересчитывалась заново». формулистов перечислил!), которые
до 900 работРегион – Африка,B5 было удобно добавлять
список в Excel».
в первом столбцеТеперь для выпадающего списка осталось указать выделены Условным форматированием. — что гораздо
соответствие и указываете ближайшее меньшее значение.: Сортировка корректная.
визуального восприятия. К убеждаюсь, что нельзя недоступны… Я всёAlex_ST решат Вашу проблему всех уровней.
вызываем связанный списокна листе новые перечни элементовУстанавливаем
(у нас – его длину. Для
Заполнение таблицы на листе Списки проще с реализацией. параметр ЛОЖЬ, то
По вопросу ещеNiff-Nif тому же, легко быть категоричным в больше по-старинке, на: Я как-то давно и быстрей иНапример: в ячейкеТаблица (См. файл примера).зависимые выпадающие списки в это наименование товара
excelworld.ru
этого используем выражение СЧЁТЕСЛИ(Списки!$C$5:$C$30;Таблица!В8).
Skip to content
Одной из наиболее полезных функций проверки данных является возможность создания выпадающего списка, который позволяет выбирать значение из предварительно определенного перечня. Но как только вы начнете применять это в своих таблицах, то неизбежно столкнетесь с проблемой: нужно сделать один выпадающий список в Excel в зависимости от значения в другом. Другими словами, как сделать динамический многоуровневый связанный список?
Вот примеры таких задач:
- перечень городов, зависящих от выбранной страны.
- товары, которые изготавливает определенный производитель.
- наименования продуктов, которые входят в товарную группу.
- выбрать модель автомобиля в зависимости от его марки.
Выглядеть это может примерно так:
Такие списки называются зависимыми, или связанными, поскольку их содержание зависит друг от друга. Такие сложные конструкции можно создавать несколькими способами.
- 1. Именованные диапазоны + функция ДВССЫЛ.
- А как быть с пробелами?
- 2. Комбинация СМЕЩ + ПОИСКПОЗ
Начнем с более простого и стандартного подхода.
1. Именованные диапазоны + функция ДВССЫЛ.
Это может показаться сложным, но на самом деле это очень просто, и является отличным примером того, как можно применить ДВССЫЛ.
Рассмотрим небольшой пример. У нас есть перечень автомобилей различных марок. Расположим их каждый в отдельном столбце. В первой ячейке каждого столбца запишем производителя — Toyota, Ford, Nissan. Необходимо, чтобы после того, как первоначально мы выберем, например, Toyota, далее мы видели бы только модели этой марки, и ничего более. То есть, нам нужен двухуровневый связанный список.
Для начала создадим именованные диапазоны с моделями автомашин. Имя каждому из них присвоим в соответствии с маркой авто. Важно, чтобы имя каждого из них точно соответствовало значению, записанному в первой строке соответствующего столбца. Иными словами, если мы создаем именованный диапазон из ячеек A2:A100, то имя его должно совпадать со значением в A1 (регистр символов значения не имеет). Посмотрите на рисунке, как это выглядит.
Итак, у нас получилось 3 именованных диапазона — «toyota», «ford», «nissan». Делать их статическими (фиксированными) или динамически (автоматически пополняемыми) — решайте сами. О том, как создать автоматически пополняемый список, смотрите ссылку в конце этой статьи.
Далее в ячейке F3 создаем выпадающий список первого уровня с моделями автомашин так, как это показано в нашем примере на рисунке. Источник данных — первые ячейки каждого столбца. Обратите внимание, что инструмент проверки вводимых значений, при помощи которого мы создаем его, прекрасно работает как с вертикальными (по строкам), так и с горизонтальными (по столбцам) данными.
И далее выбираем того производителя, который нас интересует. К примеру, «Ford».
Затем в ячейке F6 при помощи зависимого выпадающего списка второго уровня мы выбираем уже определенную модель этой марки. Перечень, который мы увидим, определяется тем, какая марка авто была перед этим выбрана.
В этом нам поможет функция ДВССЫЛ. Функция ДВССЫЛ (INDIRECT в английском варианте) преобразует текст в стандартную ссылку Excel.
Если мы запишем
=ДВССЫЛ(«F3»)
то это будет равнозначно тому, что мы записали в ячейке формулу
=F3
Но зачем же так все усложнять? Все дело в том, что некоторые виды формул Excel почему-то отказывается воспринимать как источник данных для выпадающего списка. Вот и приходится идти на такие ухищрения.
«Фишка» функции ДВССЫЛ (или INDIRECT) в том, что она позволяет использовать текст точно так же, как обычную ссылку на ячейку . Это обеспечивает нам два ключевых преимущества:
- Вы можете собрать текстовую ссылку (то есть записать ее в виде текстовой переменной), что удобно для определенных видов динамических ссылок.
- Вы можете выбрать текстовые значения на листе и использовать их как ссылку на ячейку в формуле.
В примере на этой странице мы объединяем последнюю идею с именованными диапазонами для создания многоуровневого выпадающего списка. ДВССЫЛ преобразует обычный текст в имя, которое затем превращается в нормальную ссылку и источник данных для него.
Итак, в этом примере мы берем текстовые значения из А1:С1, выбираем из них какое-то одно. К примеру, «Ford». Поскольку такое же название у нас имеет один из именованных диапазонов, то и применяем ДВССЫЛ, чтобы преобразовать текст «Ford» в ссылку =ford. И вот уже ее мы употребляем как источник для связанного выпадающего списка.
Итак, в качестве источника значений применяем формулу
=ДВССЫЛ($F$3)
В ячейке F3, которая употребляется в качестве ее аргумента, находится текстовое выражение, которое совпадает с именем соответствующего именованного диапазона с марками автомобилей.
В результате функция возвращает в нашу таблицу Excel ссылку
=ford
Регистр символов в данном случае значения не имеет — все автоматически преобразуется в нижний регистр. И именно это и будет источником данных.
Изменяя значения в F3, мы автоматически изменяем и ссылку-источник для списка в F6. В результате источник данных для зависимого выпадающего списка в F6 динамически меняется в зависимости от того, что было выбрано в F3. Если выбираем Ford, то видим только каталог машин этой марки. Аналогично, если выбираем Toyota либо Nissan.
Многоуровневые выпадающие списки могут быть и более двух раз «вложены» друг в друга. В нашем примере можно добавить еще один, третий уровень. Он может содержать наименования каких-то запасных частей для выбранной ранее модели. Так формируются сложные перечни, в которых каждый следующий уровень зависит от предыдущего.
А как быть с пробелами?
Может случиться так, что название вашей группы товаров или категории будет содержать пробелы. А именованные диапазоны не позволяют, чтобы в их названии встречался пробел. Принято заменять их символом нижнего подчеркивания «_». Как же нам быть в этом случае? Ведь в таблице названия товарных категорий с символом нижнего подчеркивания будут смотреться несколько непривычно. Например, «Косметические_товары». С непривычки можно и просто забыть ввести нужный символ. И тогда наши формулы работать не будут.
Выход довольно прост. Создавайте именованные перечни, заменяя в их названиях пробелы символом нижнего подчеркивания. В самих же значениях, записанных в ячейках таблицы Excel, используйте обычные пробелы. А перед тем, как применять в формуле, мы их специальным образом обработаем при помощи функции ПОДСТАВИТЬ.
Внутри текстовой строки вместо одних символов она подставляет другие.Для того, чтобы вместо пробела появилось нижнее подчеркивание, можно употребить формулу вида
=ПОДСТАВИТЬ(F3;» «;»_»)
То есть, мы проведем предварительную обработку значений, чтобы они соответствовали правилам написания имён. Вместо =ДВССЫЛ($F$3) запишем
=ДВССЫЛ(ПОДСТАВИТЬ($F$3;» «;»_»))
Кавычки здесь не нужны, поскольку ПОДСТАВИТЬ возвращает текстовую строку. Если же в нашем тексте нет пробелов и он состоит из одного слова, то он будет возвращен «как есть». Следите только за тем, чтобы в начале и в конце обрабатываемой текстовой переменной у вас случайно не оказались пробелы. Ведь они тоже будут заменены на нижнее подчеркивание. Ну а чтобы не заниматься этим ручным контролем, усложните еще немного свою формулу при помощи функции СЖПРОБЕЛЫ. Она автоматически уберет начальные и конечные пробелы из текста. В итоге получим:
=ДВССЫЛ(ПОДСТАВИТЬ(СЖПРОБЕЛЫ($F$3);» «;»_»))
Ну а теперь — еще один способ, как сделать многоуровневый зависимый выпадающий список в Excel.
2. Комбинация СМЕЩ + ПОИСКПОЗ
Итак, у нас снова есть перечень марок и моделей автомобилей. Только записан он немного по-другому.
Вновь перед нами стоит задача создать двухуровневый выпадающий список. Сначала — выбор марки, затем — только модели этой марки.
Первое условие — исходные данные должны быть отсортированы по маркам, а внутри марок — по моделям. То есть, нужно отсортировать по столбцу А, а затем — по В.
Начнем с простого. В ячейке D1 создадим выпадающий список из марок автомобилей. Для этого в F1:F3 запишем их названия и затем употребим их в качестве источника. Напомню, что нужно нажать Меню — Данные — Проверка данных.
Далее нам нужно в D2 создать второй уровень, где будут только модели выбранной марки. В этот раз источник данных мы определим несколько иначе, чем ранее. Воспользуемся тем, что функция СМЕЩ может возвращать массив данных, который мы как раз и можем употребить в качестве наполнения нашего второго перечня. Но для этого ей нужно передать целых 5 параметров:
- координаты верхней левой ячейки,
- на сколько строк нужно сместиться вниз — A,
- на сколько столбцов нужно перейти вправо — B,
- высота массива (строк) — C,
- ширина массива (столбцов) D.
Зеленым цветом на рисунке выделен новый диапазон. Если параметры C и D не указать, то будет возвращено содержимое единственной ячейки, в которую мы переместились, сделав несколько шагов вниз и вправо.
Традиционно точкой отсчета для функции СМЕЩ возьмем ячейку A1. Теперь нам нужно решить, на сколько позиций вниз и вправо нужно перейти, чтобы указать левый верхний угол нового перечня с моделями. Предположим, первоначально мы выбрали Ford.
На сколько шагов сместиться вниз? Применим функцию ПОИСКПОЗ, которая возвратит нам номер позиции первого вхождения «Ford».
=ПОИСКПОЗ($D$1;$A$1:$A$22;0)
Если первый раз нужное нам слово встретилось, к примеру, в 7-й позиции, то вычтем 1, чтобы получить количество шагов. То есть, начиная с первого значения, нужно сделать 6 шагов.
Третий параметр установим равным 1, так как нужно перейти на один шаг вправо из A в B. Мы находимся в начальной точке нашего диапазона. Теперь рассчитаем, на сколько ячеек вниз он будет продолжаться. Для этого подсчитаем, сколько раз «Ford» встречается в нашем перечне. Столько и будет значений вниз.
=СЧЁТЕСЛИ($A$1:$A$22;$D$1)
А теперь объединяем все это в СМЕЩ:
=СМЕЩ($A$1;ПОИСКПОЗ($D$1;$A$1:$A$22;0)-1;1;СЧЁТЕСЛИ($A$1:$A$22;$D$1);1)
Последняя единичка означает, что массив состоит из одной колонки.
В D2 создаем выпадающий список при помощи этого выражения. В нем будут только модели Ford, поскольку эта марка была выбрана ранее.
Аналогичным образом можно создать и третий уровень зависимого выпадающего списка.
Еще полезная дополнительная информация:
В Excel вы можете быстро и легко создать зависимый раскрывающийся список, но пробовали ли вы когда-нибудь создать многоуровневый зависимый раскрывающийся список, как показано на следующем снимке экрана? В этой статье я расскажу о том, как создать многоуровневый зависимый выпадающий список в Excel.
Создать многоуровневый зависимый выпадающий список в Excel
Чтобы создать многоуровневый зависимый раскрывающийся список, выполните следующие действия:
Во-первых, создайте данные для многоуровневого зависимого выпадающего списка.
1. Сначала создайте данные первого, второго и третьего раскрывающегося списка, как показано ниже:
Во-вторых, создайте имена диапазонов для каждого значения раскрывающегося списка.
2. Затем выберите значения первого раскрывающегося списка (исключая ячейку заголовка), а затем дайте им имя диапазона в поле Поле имени которые помимо строки формул, см. снимок экрана:
3. Затем выберите данные второго раскрывающегося списка и нажмите Формулы > Создать из выбранного, см. снимок экрана:
4. В выскочившем Создать имена из выбора диалоговое окно, отметьте только Верхний ряд вариант, см. снимок экрана:
5. Нажмите OK, И имена диапазонов были созданы для каждого второго раскрывающегося списка сразу, затем вы должны создать имена диапазонов для значений третьего раскрывающегося списка, продолжайте нажимать Формулы > Создать из выбранного, В Создать имена из выделенного диалоговое окно, отметьте только Верхний ряд вариант, см. снимок экрана:
6, Затем нажмите OK кнопки, значения раскрывающегося списка третьего уровня были определены имена диапазонов.
- Tips: Вы можете пойти Менеджер имен диалоговое окно, чтобы увидеть все созданные имена диапазонов, которые были расположены в Менеджер имен диалоговое окно, как показано на скриншоте ниже:
В-третьих, создайте выпадающий список Data Validation.
7. Затем щелкните ячейку, в которую вы хотите поместить первый зависимый раскрывающийся список, например, я выберу ячейку I2, затем щелкните Данные > проверка достоверности данных > проверка достоверности данных, см. снимок экрана:
8. В проверка достоверности данных диалоговое окно под Настройки , выберите Список из Разрешить раскрывающийся список, а затем введите эту формулу: = Континенты в Источник текстовое поле, см. снимок экрана:
Внимание: В этой формуле Континенты — имя диапазона первых раскрывающихся значений, созданных на шаге 2, измените его по своему усмотрению.
9, Затем нажмите OK Кнопка, первый раскрывающийся список был создан, как показано ниже:
10. Затем вы должны создать второй зависимый раскрывающийся список, выберите ячейку, в которую вы хотите поместить второй раскрывающийся список, здесь я нажимаю J2, а затем продолжаю щелкать Данные > проверка достоверности данных > проверка достоверности данных, В проверка достоверности данных диалоговом окне выполните следующие операции:
- (1.) Выберите Список из Разрешить раскрывающийся список;
- (2.) Затем введите эту формулу: = КОСВЕННО (ПОДСТАВИТЬ (I2; «»; «_»)) в Источник текстовое окно.
Внимание: В приведенной выше формуле I2 — это ячейка, содержащая первое значение раскрывающегося списка, пожалуйста, измените его на свое.
11. Нажмите OK, и сразу был создан второй зависимый раскрывающийся список, см. снимок экрана:
12. На этом шаге вы должны создать третий зависимый раскрывающийся список, щелкнуть ячейку, чтобы вывести значение третьего раскрывающегося списка, здесь я выберу ячейку K2, а затем щелкните Данные > проверка достоверности данных > проверка достоверности данных, В проверка достоверности данных диалоговом окне выполните следующие операции:
- (1.) Выберите Список из Разрешить раскрывающийся список;
- (2.) Затем введите эту формулу: = КОСВЕННО (ПОДСТАВИТЬ (J2; «»; «_»)) в текстовое поле Источник.
Внимание: В приведенной выше формуле J2 — это ячейка, содержащая второе значение раскрывающегося списка, пожалуйста, измените его на свое.
13, Затем нажмите OK, и три зависимых раскрывающихся списка были успешно созданы, см. демонстрацию ниже:
Создавайте многоуровневый зависимый выпадающий список в Excel с удивительной функцией
Возможно, описанный выше метод является проблемным для большинства пользователей, здесь я представлю простую функцию —Динамический раскрывающийся список of Kutools for Excel, с помощью этой утилиты вы можете быстро создать зависимый выпадающий список с 2-5 уровнями всего за несколько кликов. Нажмите, чтобы скачать Kutools for Excel!
Советы:Чтобы применить это Динамический раскрывающийся список функция, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Во-первых, вы должны создать формат данных, как показано на скриншоте ниже:
2, Затем нажмите Кутулс > Раскрывающийся список > Динамический раскрывающийся список, см. снимок экрана:
3. В Зависимый раскрывающийся список диалоговом окне выполните следующие действия:
- Проверить Раскрывающийся список, зависящий от 3-5 уровней вариант в Тип раздел;
- Укажите необходимый диапазон данных и выходной диапазон.
4, Затем нажмите Ok Кнопка, теперь трехуровневый раскрывающийся список был создан в виде следующей демонстрации:
Нажмите, чтобы скачать Kutools for Excel и бесплатная пробная версия прямо сейчас!
Более относительные статьи с выпадающим списком:
- Автоматическое заполнение других ячеек при выборе значений в раскрывающемся списке Excel
- Допустим, вы создали раскрывающийся список на основе значений в диапазоне ячеек B8: B14. Когда вы выбираете любое значение в раскрывающемся списке, вы хотите, чтобы соответствующие значения в диапазоне ячеек C8: C14 автоматически заполнялись в выбранной ячейке. Например, когда вы выбираете Люси в раскрывающемся списке, она автоматически заполняет счет 88 в ячейке D16.
- Создать зависимый раскрывающийся список в листе Google
- Вставка обычного раскрывающегося списка в лист Google может быть легкой задачей для вас, но иногда вам может потребоваться вставить зависимый раскрывающийся список, что означает второй раскрывающийся список в зависимости от выбора первого раскрывающегося списка. Как бы вы справились с этой задачей в листе Google?
- Создать раскрывающийся список с изображениями в Excel
- В Excel мы можем быстро и легко создать раскрывающийся список со значениями ячеек, но, пробовали ли вы когда-нибудь создать раскрывающийся список с изображениями, то есть, когда вы щелкаете одно значение из раскрывающегося списка, его относительное изображение будет отображаться одновременно. В этой статье я расскажу о том, как вставить выпадающий список с изображениями в Excel.
- Выбрать несколько элементов из раскрывающегося списка в ячейку в Excel
- Выпадающий список часто используется в повседневной работе Excel. По умолчанию в раскрывающемся списке можно выбрать только один элемент. Но в некоторых случаях вам может потребоваться выбрать несколько элементов из раскрывающегося списка в одну ячейку, как показано ниже. Как с этим справиться в Excel?
- Создать раскрывающийся список с гиперссылками в Excel
- В Excel добавление раскрывающегося списка может помочь нам решить нашу работу эффективно и легко, но, если вы когда-нибудь пытались создать раскрывающийся список с гиперссылками, когда вы выбираете URL-адрес из раскрывающегося списка, будет открываться гиперссылка автоматически? В этой статье я расскажу о том, как создать выпадающий список с активированными гиперссылками в Excel.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы и хранение данных; Разделить содержимое ячеек; Объедините повторяющиеся строки и сумму / среднее значение… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Избранные и быстро вставляйте формулы, Диапазоны, диаграммы и изображения; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Группировка сводной таблицы по номер недели, день недели и другое … Показать разблокированные, заблокированные ячейки разными цветами; Выделите ячейки, у которых есть формула / имя…
Вкладка Office — предоставляет интерфейс с вкладками в Office и значительно упрощает вашу работу
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Имеется несколько способов создания выпадающего списка. Выбор одного из них зависит от структуры имеющихся у вас данных.
Первый способ создания двухуровнего списка
Первый способ основывается на создание «умной» таблицы, заголовок которой содержит значения первого выпадающего списка (группы), а строки таблицы соответствуют значениям второго выпадающего списка (подгруппы). Значения элементов подгруппы должны располагаться в соответствующем столбце группы, как на рисунке ниже.
Теперь приступим к созданию первого выпадающего списка группы (в моем случае — список стран):
- Выберите ячейку, в которую будете вставлять выпадающий список;
- Переходим на вкладку ленты Данные;
- Выбираем команду Проверка данных;
- В выпадающем списке выбираем значение Список;
- В поле Источник указываем следующую формулу =ДВССЫЛ(«Таблица1[#Заголовки]»).
Осталось создать второй зависимый выпадающий список – список подгрупп.
Смело повторяем 4 первых пункта описанных выше. Источником в окне Проверка данных для второго выпадающего списка будет служить формула =ДВССЫЛ(«Таблица1[«&F2&»]»). Ячейка F2 в данном случае — значение первого выпадающего списка.
Второй способ создания двухуровнего списка
Второй способ удобно применять, когда данные выпадающего списка записаны в два столбца. В первом идет наименование группы, а во втором – подгруппы.
ВАЖНО! Перед созданием зависимого списка по подгруппам необходимо отсортировать исходную таблицу по первому столбцу (столбец с группой) далее будет понятно зачем это делается.
Для создания выпадающего групп нам понадобится дополнительный столбец, содержащий уникальные значения групп из исходной таблицы. Для создания этого списка используйте функцию удаления дубликатов или воспользуйтесь командой Уникальные из надстройки VBA-Excel.
Теперь создадим выпадающий список групп. Для этого выполните 4 первых пункта из первого способа создания двухуровнего списка. В качестве Источника укажите диапазон уникальных значений групп. Тут все стандартно.
Теперь самая сложная часть — указать в Источнике динамическую ссылку на диапазон со значениями второго выпадающего списка (списка подгрупп). Решать ее будем с помощью функции СМЕЩ(ссылка, смещ_по_строкам, смещ_по_столбцам, [высота], [ширина]), которая возвращает ссылку на диапазон, отстоящий от ячейки или диапазона ячеек на заданное число строк и столбцов.
- Ссылка в нашем случае — $A$1 — верхний левый угол исходной таблицы;
- Смещ_по_строкам — ПОИСКПОЗ(F3;$A$1:$A$67;0)-1 — номер строки со значением искомой группы (в моем случае страны ячейка F3) минус единица;
- Cмещ_по_столбцам — 1 — так как нам необходим столбец с подгруппами (городами);
- [Высота] — СЧЁТЕСЛИ($A$1:$A$67;F3) — количество подгрупп в искомой группе (количество городов в стране F3);
- [Ширина] — 1 — так как это ширина нашего столбца с подгруппами.
Многоуровневый связанный список в EXCEL
history 21 января 2013 г.
- Группы статей
- Выпадающий список
- Имена
- Проверка данных
Для моделирования сложных иерархических данных создадим Многоуровневый связанный список.
Потребность в создании иерархических данных появляется при решении следующих задач:
- Отдел – Сотрудники отдела . При выборе отдела из списка всех отделов компании, динамически должен формироваться список, содержащий всех сотрудников этого отдела (двухуровневая иерархия);
- Город – Улица – Номер дома . При заполнении адреса проживания из списка городов нужно выбирать город , затем из списка всех улиц этого города – улицу , затем, из списка всех домов на этой улице – номер дома (трехуровневая иерархия).
В этой статье рассмотрен Многоуровневый связанный список. Двухуровневый связанный список или просто Связанный список рассмотрен в статьях Связанный список и Расширяемый Связанный список. Материал статьи один из самых сложных на сайте Excel2.ru , поэтому необходимо для начала ознакомиться с вышеуказанными статьями. Многоуровневый связанный список будем реализовывать с помощью инструмента Проверка данных ( Данные/ Работа с данными/ Проверка данных ) с условием проверки Список .Создание Многоуровневого связанного списка рассмотрим на конкретном примере.
Примечание : Рассмотренный в этой статье Многоуровневый связанный список на самом деле правильнее назвать Трехуровневым, т.к. создать четырехуровневый связанный список, используя рассмотренный здесь подход, очень проблематично. Для тех, кому требуется создать структуру с 4-мя и более уровнями, см. статью Многоуровневый связанный список типа Предок-Родитель .
Постановка задачи
Имеется перечень Регионов . Для каждого Региона имеется свой перечень Стран . Для каждой Страны имеется свой перечень Городов .
Пользователь должен иметь возможность, выбрав определенный Регион , в соседней ячейке выбрать из Выпадающего (раскрывающегося) списка нужную ему Страну из этого Региона . В другой соседней ячейке пользователь должен иметь возможность выбрать нужный ему Город из этой Страны (см. файл примера ).
В окончательном виде трехуровневый связанный список должен работать так:
Сначала выберем, например, Регион «Америка» с помощью Выпадающего списка .
Затем выберем Страну «США» из Региона «Америка».
Причем перечень стран в выпадающем списке будет содержать только страны из выбранного на предыдущем шаге Региона «Америка».
И, наконец, выберем Город «Атланта» из Страны «США».
Причем перечень городов в выпадающем списке будет содержать только города из выбранной на предыдущем шаге Страны, т.е. из «США».
Решение
Итак, приступим к созданию Трехуровневого связанного списка . Таблицу, в которую будут заноситься данные с помощью Трехуровневого связанного списка , разместим на листе Таблица .
Список Регионов и перечни Стран разместим на листе Страны .
Обратите внимание, что названия Регионов (диапазон А2:А12 на листе Страны ) в точности должны совпадать с заголовками столбцов, содержащих названия соответствующих Стран ( В1: L 1 ).
Это требование обеспечивается формулой (см. статьи о Транспонировании ). =ДВССЫЛ(АДРЕС(СТРОКА($A$1)-СТОЛБЕЦ($A$1)+СТОЛБЕЦ();1))
с помощью которой формируются заголовки столбцов. Введем ее в диапазон ячеек В1: L 1 .
Список Стран и перечни Городов разместим на листе Города .
Откуда же возьмется перечень стран на листе Города ? Очевидно, что после заполнения листа Страны названиями стран, необходимо, что они каким-то чудесным образом переместились на лист Города . Это чудесное перемещение организуем формулами. Список Стран сформируем на листе Города в столбце А с помощью решения приведенного в статье Объединение списков . Значения для этого списка будем брать из Именованного диапазона Диап_Стран (его нужно предварительно создать через Диспетчер имен ) . Именованный диапазон Диап_Стран образуем формулой:
Для формирования списка Стран нам также понадобится Именованная формула Строки_Столбцы_Стран
Окончательная формула в столбце А на листе Города выглядит так:
сформирует необходимый нам список Стран .
Теперь создадим Динамический диапазон для формирования Выпадающего списка содержащего названия Регионов . Для этого необходимо:
- нажать кнопку меню « Присвоить имя » ( Формулы/ Определенные имена/ Присвоить имя );
- в поле Имя ввести Регионы ;
- в поле Диапазон ввести формулу
Формула подсчитывает количество элементов в столбце А на листе Страны (функция СЧЁТЗ() ) и определяет ссылку на последний элемент в столбце (функция ИНДЕКС() ), тем самым формируется диапазон, содержащий все значения Регионов . Пропуски в столбце А не допускаются.
Аналогичным образом создадим Динамический диапазон Список_Стран для формирования выпадающего списка содержащего названия стран:
Создадим Именованную формулу Позиция_региона для определения позиции, выбранного пользователем региона, в созданном выше диапазоне Регионы:
Т.к. в формуле использована относительная адресация , то важно перед созданием формулы сделать активной ячейку B5 на листе Таблица .
Аналогичным образом создадим именованную формулу для определения позиции, выбранной пользователем страны, в диапазоне Список_Стран =ПОИСКПОЗ(таблица!B5;Список_Стран;0) . Перед созданием формулы нужно сделать активной ячейку С5 на листе Таблица .
Создадим Именованные константы МаксСтран равную 20 и МаксГородов равную 30. Константы соответствует максимальному количеству стран в регионе и, соответственно, максимальному количеству городов в стране. Эти значения произвольны и их можно изменить.
Создадим именованный диапазон Выбранный_Регион для определения диапазона на листе Страны , содержащего страны выбранного региона:
Теперь, например, при выборе региона Америка функция СМЕЩ() вернет ссылку на диапазон страны!$B$2:$B$20
Создадим аналогичный диапазон Выбранная_Страна для определения диапазона на листе Города , содержащего города выбранного региона: =СМЕЩ(города!$A$2;;Позиция_страны;МаксГородов)
Создадим две последние именованные формулы Страны и Города : =СМЕЩ(страны!$A$2;;Позиция_региона;СЧЁТЗ(Выбранный_Регион)) =СМЕЩ(города!$A$2;;Позиция_страны;СЧЁТЗ(Выбранная_Страна))
Эти формулы нужны для того, чтобы в выпадающих списках не отображались пустые строки.Наконец сформируем связанный выпадающий список для ячеек из столбца Страна налисте Таблица .
- выделяем диапазон B5:B22 налисте Таблица ;
- вызываем инструмент Проверка данных ,
- устанавливаем тип данных Список ,
- в поле Источник вводим: =Страны .
Также создадим связанный выпадающий список для ячеек из столбца Город (диапазон С5:С22 , в поле Источник вводим: =Города )
На листе Таблица после выбора Региона и Страны теперь есть возможность выбора Города .
Для добавления новых Регионов и их Стран достаточно ввести новый Регион в столбец A (лист Страны ), в строке 1 автоматически отобразится соответствующий заголовок. Под появившимся заголовком в строке 1 введите страны нового Региона .Для добавления новых Городов, на листе Города в строке 1 найдите нужное название страны (оно автоматически появится там после добавления страны на листе Страны ). Под этим заголовком введите название города.
СОВЕТ: В этой статье города (и страны) размещены в нескольких столбцах. Обычно однотипные значения размещают в одном столбце (списке). В статье Многоуровневый связанный список в MS EXCEL на основе таблицы все исходные данные размещены на одном листе, а однотипные данные (названия городов) — в одном столбце. Это облегчает написание формул и позволяет создать списки с большим количеством уровней иерархии (4-6).
Уважаемые модераторы, не спешите удалять или игнорировать этот пост — он является НЕ тысячным клоном себе подобных, НО попыткой и просьбой о реализации ДЕЙСТВИТЕЛЬНО УНИВЕРСАЛЬНОГО, решающего БОЛЬШИНСТВО вопросов по данной популярной теме (кроме того сюда всегда можно будет отправить по этой теме).
Начну с формы ведения. Предлагаю в качестве платформы создания таких списков — «умные» таблицы, как учит Николай Павлов, т.к. они сразу решают множество проблем по работе с базой данных и являются универсальными практически для любых потребностей (сами растягиваются, сами формируют именованые диапазоны полей и т.д.). Наиболее близкие к желаемому примеры найдены здесь, за авторством ber$erk аж в начале 2013 года:
http://goo.gl/i39PAE
и здесь
http://goo.gl/mT3jcm
(первый вариант очень узко заточен, а второй отказывается работать с большим количеством данных (хотя очень крутой и универсальный)…
Короче говоря, создавать 2х уровневые выпадающие списки мы умеем вот по этой теме
http://planetaexcel.ru/techniques/1/38/#6067
, а сделать так, чтобы в каком-либо диапазоне НА ЛИСТЕ отсутствовали дубликаты можно, предварительно сделав сводную на основе необходимого списка и ссылаться уже на неё (автообновлять можно простым макросом) (найдено здесь
http://goo.gl/TosXzm
)
Для удобства объяснения введу такие понятия для примера: 1 (первый) уровень списков — исходный начальный диапазон (овощи и фрукты); 2 уровень (помидоры и огрурцы — овощи, а апельсины и мандарины -фрукты; 3 уровень — соответственно дальше по уточнениям и т.д.)
С первой и ОСНОВНОЙ проблемой я столкнулся, когда искал способ удалять дубликаты ИЗ ФОРМИРУЕМОГО (СМЕЩ+ИНДЕКС+ПОИСКПОЗ) выпадающего списка, то есть НА ЛЕТУ (в то же время есть способ удаления дубликатов из списка НА ЛИСТЕ (но хотя бы НЕ формулой массива) здесь
http://www.planetaexcel.ru/techniques/2/103/)
.
Вторая проблема возникает, когда внутри уровня частично или полностью пересекаются формируемые списки (например овощи-красные-помидоры и фрукты-красные-яблоки) — здесь признак 2 уровня дублируется для уровня выше (первого), поэтому вновь сформированный зависимый выпадающий список по критерию «красные» выдаст либо И помидоры, И яблоки (если сортировка будет произведена по 2 уровню), либо ТОЛЬКО «помидоры» (т.к. овощи первые по алфавиту), если будет проведена необходимая сортировка справа-налево.
Решением будет являться создание дополнительного столбца после каждого критерия, кроме первого (причём и в справочнике, и в листе выбора), в котором будут сцепляться все предыдущие критерии. Соответственно, выбор следующего уровня будет осуществляться по сцепке всех предыдущих.
Это, на мой взгляд, основные проблемы, которые возникают при формировании ЗНАЧИТЕЛЬНЫХ каскадных выпадающих списков. Решение вижу только макросами и UDF, т.к. набор и сложность формул и списков, чтобы ЭТО реализовать, отобьёт любое желание. Чтобы не требовалось сортировки, сводных (желательно даже обойтись без создания вручную формульных диапазонов). Как вариант файл-шаблон с таблицами и макросами (заполнил таблицы на нужное количество уровней и вперёд) Файл с примерами прикреплён. Слежу за темой…
Изменено: Jack_Famous — 30.03.2016 20:30:37