Автор надстройки 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.
Ну а если у вас есть трудности с организацией исходных данных и построением выпадающих списков, вы всегда можете получить консультацию разработчиков!
Для сложных иерархических структур с тремя и более уровнями создадим Многоуровневый связанный список типа Предок-Родитель. Теперь структуры типа: Регион-Страна-Город-Улица можно создавать в MS EXCEL.
В статье
Многоуровневый связанный список в MS EXCEL
мы уже создавали многоуровневый список. Но, у того списка было 2 недостатка:
- слишком сложные формулы;
- максимальное количество уровней — 3.
Предлагаемое ниже решение лишено этих недостатков, но исходный список, содержащий названия стран, городов и улиц получается немного громоздким и его нужно наполнять придерживаясь определенных правил.
В результате мы должны получить вот такой 4-х уровневый связанный список:
Решение
Выпадающие списки
будем формировать с помощью одной большой
Именованной формулы
:
=ЕСЛИ(Таблица!B$7=Списки!$F$5;СМЕЩ(Списки!$D$4;1;0;СЧЁТЕСЛИ(Списки!$B$5:$B$30;0));СМЕЩ(Списки!$D$4;ПОИСКПОЗ(Таблица!A8;Списки!$C$5:$C$30;0);0;СЧЁТЕСЛИ(Списки!$C$5:$C$30;Таблица!A8)))
Эту формулу можно посмотреть через
Диспетчер имен
(имя формулы —
Выбор
), но так как формула использует
относительную адресацию
в ссылках на ячейки
Таблица!B$7 и
Таблица!A8, то для ее просмотра нужно предварительно выделить ячейку
В8
на листе Таблица. О том как работает эта формула см. в разделе статьи ниже.
ПРИМЕЧАНИЕ
: Функция
ЕСЛИ()
нужна для формирования списка самого верхнего уровня иерархии — у него нет Родителя.
Для ввода формулы выделите ячейку
B8
, вызовите
Диспетчер имен
, и введите формулу:
Нажмите ОК.
Опять выделите ячейку
B8
, сформируйте выпадающий список на основе
Проверки данных
. В поле Тип данных укажите Список, в поле Источник введите формулу
=Выбор
.
С помощью
Маркера заполнения
скопируйте ячейку вправо и вниз (или вверх и вправо):
выпадающие списки
всех уровней будут сформированы автоматически.
Наполнять
выпадающие списки
будем из таблицы на листе Списки (см.
файл примера
):
Для наглядности различные уровни выделены
Условным форматированием
.
Заполнение таблицы на листе Списки нужно производить следующим образом:
- Столбец Номер уровня содержит числовые коды уровней. Самый верхний уровень (0) содержит название Регионов. Можно создать любое количество уровней;
- Столбец Родитель содержит названия из столбца Потомок более верхнего уровня;
- Столбец Потомок связывает значений из 2-х соседних уровней. Нужно иметь ввиду, что если мы начали заполнять, например, все страны Америки, то нужно полностью закончить этот список, затем переходить к следующему региону. Выполнение этого требования необходимо для правильной работы вышеуказанной формулы. Выпадающие списки формируются именно из этого столбца.
Как работает эта формула?
Рассмотрим как формируется
выпадающий список
в ячейке
B8
на листе Таблица (заполняем Регионы).
Выражение
ЕСЛИ(Таблица!B$7=Списки!$F$5
; проверяет заполняем ли мы столбец Регионы (самый верхний уровень с номером 0) или нет. В данном случае выражение вернет значение ИСТИНА;
Так как предыдущее выражение =ИСТИНА, то работает первое условие функции
ЕСЛИ()
, т.е. выражение
СМЕЩ(Списки!$D$4;1;0;СЧЁТЕСЛИ(Списки!$B$5:$B$30;0))
-
функция
СМЕЩ()
выбирает из столбца D (Потомки) все значения, у которых уровень равен 0. Из этих значений формируется
выпадающий список.
Рассмотрим как формируется
выпадающий список
в ячейке
С8
на листе Таблица (заполняем Страны).
В этом случае формула будет несколько другая, т.к. в ней сработают относительные ссылки:
=ЕСЛИ(Таблица!C$7=Списки!$F$5;СМЕЩ(Списки!$D$4;1;0;СЧЁТЕСЛИ(Списки!$B$5:$B$30;0));СМЕЩ(Списки!$D$4;ПОИСКПОЗ(Таблица!B8;Списки!$C$5:$C$30;0);0;СЧЁТЕСЛИ(Списки!$C$5:$C$30;Таблица!B8)))
-
Выражение
ЕСЛИ(Таблица!С$7=Списки!$F$5
; в данном случае выражение вернет значение ЛОЖЬ; -
Так как предыдущее выражение =ЛОЖЬ, то работает второе условие функции
ЕСЛИ()
, т.е. выражение
СМЕЩ(Списки!$D$4;ПОИСКПОЗ(Таблица!B8;Списки!$C$5:$C$30;0);0;СЧЁТЕСЛИ(Списки!$C$5:$C$30;Таблица!B8))
-
функция
СМЕЩ()
выбирает из столбца D (Потомки) все значения, у которых Родитель = Америка. -
Для этого выражение
ПОИСКПОЗ(Таблица!B8;Списки!$C$5:$C$30;0)
возвращает номер позиции первой ячейки в столбце Родитель, содержащей значение Америка. Это позиция номер 4. Именно с этой позиции, но из другого столбца, будет формироваться наш
выпадающий список
; -
Теперь для
выпадающего списка
осталось указать его длину. Для этого используем выражение
СЧЁТЕСЛИ(Списки!$C$5:$C$30;Таблица!В8)
.
Чтобы добавить новое значение, например, новую Страну с городами и улицами, нужно добавить в таблицу на листе Списки нужное количество строк. Чтобы не исправлять формулу, строки следует добавлять, вставляя их между уже существующими строками.
Теперь представим ситуацию, что после заполнения таблицы с помощью
выпадающих списков
, было изменено значение ячейки
С10
. Например, вместо США выберем Мексика. Естественно, значение в ячейке
D10
не изменится (в ней останется один из городов США). Чтобы подсказать пользователю об ошибке, используем
Условное форматирование
.
Формула в правиле
Условного форматирования
ищет в таблице на листе Списки пару Родитель-Потомок. Если такая пара не найдена, то ячейка выделяется красной заливкой.
В 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% и сокращает количество щелчков мышью на сотни каждый день!
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, поскольку эта марка была выбрана ранее.
Аналогичным образом можно создать и третий уровень зависимого выпадающего списка.
Еще полезная дополнительная информация:
Многоуровневый выпадающий список |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |