Связанные (зависимые) выпадающие списки
Способ 1. Функция ДВССЫЛ (INDIRECT)
Этот фокус основан на применении функции ДВССЫЛ (INDIRECT), которая умеет делать одну простую вещь — преобразовывать содержимое любой указанной ячейки в адрес диапазона, который понимает Excel. То есть, если в ячейке лежит текст «А1», то функция выдаст в результате ссылку на ячейку А1. Если в ячейке лежит слово «Маша», то функция выдаст ссылку на именованный диапазон с именем Маша и т.д. Такой, своего рода, «перевод стрелок» 
Возьмем, например, вот такой список моделей автомобилей Toyota, Ford и Nissan:

Выделим весь список моделей Тойоты (с ячейки А2 и вниз до конца списка) и дадим этому диапазону имя Toyota на вкладке Формулы (Formulas) с помощью Диспетчера имен (Name Manager). Затем повторим то же самое со списками моделей Ford и Nissan, задав соответственно имена диапазонам Ford и Nissan.
При задании имён помните о том, что имена диапазонов в Excel не должны содержать пробелов, знаков препинания и начинаться обязательно с буквы. Поэтому если бы в одной из марок автомобилей присутствовал бы пробел (например Ssang Yong), то его пришлось бы заменить в ячейке и в имени диапазона на нижнее подчеркивание (т.е. Ssang_Yong).
Теперь создадим первый выпадающий список для выбора марки автомобиля. Выделите пустую ячейку (на картинке выше — зелёную) и нажмите кнопку Проверка данных (Data Validation) на вкладке Данные (Data). Затем из выпадающего списка Тип данных (Allow) выберите вариант Список (List) и в поле Источник (Source) выделите ячейки с названиями марок (желтые ячейки в нашем примере). После нажатия на ОК первый выпадающий список готов.
Теперь создадим второй выпадающий список, в котором будут отображаться модели выбранной в первом списке марки. Также как в предыдущем случае, выделите пустую ячейку, где должен быть список моделей (на картинке она синяя) и откройте окно Проверки данных, но в поле Источник нужно будет ввести вот такую формулу:
=ДВССЫЛ(F2)
где F2 — адрес ячейки с первым выпадающим списком (замените на свой).
Все. После нажатия на ОК содержимое второго списка будет выбираться по имени диапазона, выбранного в первом списке.
Минусы такого способа:
- Надо руками создавать много именованных диапазонов (если у нас много марок автомобилей).
- В качестве вторичных (зависимых) диапазонов не могут выступать динамические диапазоны задаваемые формулами типа СМЕЩ (OFFSET). Для первичного (независимого) списка их использовать можно, а вот вторичный список должен быть определен жестко, без формул. Однако, это ограничение можно обойти, создав справочник соответствий марка-модель (см. Способы 3 и 4).
- Имена вторичных диапазонов должны совпадать с элементами первичного выпадающего списка. Т.е. если в нем есть текст с пробелами, то придется их заменять на подчеркивания с помощью функции ПОДСТАВИТЬ (SUBSTITUTE), т.е. формула будет выглядеть как:
=ДВССЫЛ(ПОДСТАВИТЬ(F2;» «;»_»))
Способ 2. Умные таблицы
Этот подход очень похож на предыдущий, но использует вместо именованных диапазонов — «умные» динамические таблицы, которые будут выступать источником данных для вторичного списка:

Таким образом, мы:
- Сначала преобразуем наши справочники в «умные» таблицы, используя сочетание клавиш Ctrl+T или команду Главная — Форматировать как таблицу (Home — Format as Table) и
- Даём им имена (Фрукты, Овощи, Зелень) на вкладке Конструктор (Design) в поле Имя таблицы (Table Name).
- Создаём первый и второй (связанный) выпадающие списки точно так же, как в предыдущем способе с функцией ДВССЫЛ (INDIRECT).
Главным плюсом и отличием такого способа является возможность легко добавлять новые товары в каждую категорию — динамическая «умная» таблица автоматически расширится, и нам не придется вручную исправлять ссылку на диапазон (как это требуется в предыдущем способе).
Способ 3. Отсортированный справочник
Этот способ требует наличия отсортированного списка соответствий марка-модель вот такого вида:

Для создания первичного выпадающего списка можно марок можно воспользоваться обычным способом, описанным выше, т.е. выбрать на вкладке Данные (Data) команду Проверка данных (Data validation) и указать в качестве источника жёлтые ячейки с марками
А вот для зависимого списка моделей придется создать именованный диапазон с функцией СМЕЩ (OFFSET), который будет динамически ссылаться только на ячейки моделей определенной марки. Для этого:
- Нажмите сочетание клавиш Ctrl+F3 или воспользуйтесь кнопкой Диспетчер имен (Name manager) на вкладке Формулы (Formulas).
- Создайте новый именованный диапазон с любым именем (например Модели) и в поле Ссылка (Reference) в нижней части окна введите руками следующую формулу:
=СМЕЩ($A$1;ПОИСКПОЗ($G$7;$A:$A;0)-1;1;СЧЁТЕСЛИ($A:$A;$G$7);1)
=OFFSET($A$1;MATCH($G$7;$A:$A;0)-1;1;COUNTIF($A:$A;$G$7);1)
Ссылки должны быть абсолютными (со знаками $). После нажатия Enter к формуле будут автоматически добавлены имена листов — не пугайтесь.
Работает это следующим образом. Функция СМЕЩ (OFFSET) умеет выдавать ссылку на диапазон нужного размера, сдвинутый относительно исходной ячейки на заданное количество строк и столбцов. В более понятном варианте синтаксис этой функции таков:
=СМЕЩ(начальная_ячейка; сдвиг_вниз; сдвиг_вправо; высота_диапазона_в_строках; ширина_диапазона_в_столбцах)
Таким образом:
- начальная ячейка — берем первую ячейку нашего списка, т.е. А1
- сдвиг_вниз — нам считает функция ПОИСКПОЗ (MATCH), которая, попросту говоря, выдает порядковый номер ячейки с выбранной маркой (G7) в заданном диапазоне (столбце А)
- сдвиг_вправо = 1, т.к. мы хотим сослаться на модели в соседнем столбце (В)
- высота_диапазона_в_строках — вычисляем с помощью функции СЧЕТЕСЛИ (COUNTIF), которая умеет подсчитать количество встретившихся в списке (столбце А) нужных нам значений — марок авто (G7)
- ширина_диапазона_в_столбцах = 1, т.к. нам нужен один столбец с моделями
В итоге должно получиться что-то вроде этого:

Осталось добавить выпадающий список на основе созданной формулы к ячейке G8. Для этого:
- выделяем ячейку G8
- выбираем на вкладке Данные (Data) команду Проверка данных (Data validation)
- из выпадающего списка выбираем вариант проверки Список (List) и вводим в качестве Источника (Source) знак равно и имя нашего диапазона, т.е. =Модель
И наш связанный список моделей готов.
Способ 4. Неотсортированный справочник
Предыдущий способ неплох, но предполагает наличие обязательно отсортированного справочника вида «марка-модель», где названия марок повторяются многократно. Иногда же требуется в качестве справочника использовать более банальную конструкцию:

Первый уровень выпадающего списка (диапазон А2:А14 на рисунке выше) здесь делается классическим образом через команду Данные — Проверка данных — Список (Data — Validation — List) и в качестве источника указать зелёные ячейки с названиями категорий.
А для связанных выпадающих списков во втором столбце (B2:B14) в поле Источник (Source) мы используем хитрую формулу:
=СМЕЩ($E$2;1;ПОИСКПОЗ(A2;$E$2:$G$2;0)-1;СЧЁТЗ(СМЕЩ($E$2;1;ПОИСКПОЗ(A2;$E$2:$G$2;0)-1;10;1));1)
Она ищет нужную категорию в зелёной шапке таблицы, спускается на одну ячейку вниз и ссылается затем на диапазон, по высоте равный количеству товаров в выбранной категории.
Ссылки по теме
- 4 способа создать выпадающий список в ячейках листа
- Автоматическое создание выпадающих списков при помощи инструментов надстройки PLEX
- Выбор фото из выпадающего списка
- Выпадающий список с автоматическим удалением уже использованных элементов
- Динамическая выборка данных для выпадающего списка функциями ИНДЕКС и ПОИСКПОЗ
Связанные выпадающие списки в Excel.
Смотрите такжеIf Not Intersect(Target, обычный список именованным Если этого не наличие функции поиска проверке данных через меньше элементов. реализации этого столбец от содержимого ячеек). первой части задачиНужен макрос длянажмите ОК.France(Проверка данных), аD
Но бывает название Легко и быстроВыпадающие списки в Excel Range(«C2:C5»)) Is Nothing
диапазоном (с помощью сделать, Excel не и зависимости. макрос так:2) Возможно перенос В с номерами Всё работает. сначала пытался делать получения выпадающего спискаИмя Сотрудники ссылается на Динамический, в связанном списке затем в выпадающем, диапазона (столбца) состоит
сделать так.бывают разные. Есть And Target.Cells.Count = «Диспетчера имен»). Помним, позволит нам вводитьПуть: меню «Данные» -Range(«A1»).Validation.Add xlValidateList, xlValidAlertStop, классов реализован не


с данными, расположенными диапазон в столбце у нас будут меню выберитеF из нескольких слов.Как присвоить имя диапазону простой 1 Then что имя не
новые значения. инструмент «Проверка данных» xlBetween, Join(massiv,»,»)где massiv самым оптимальным способом скрывается. Может, ввиду которые хотелось бы именованный диапазон из в несмежных ячейках
B города только изData Validationи Например, «Зимние пальто». враскрывающийся список Excel вApplication.EnableEvents = False может содержать пробелов
Вызываем редактор Visual Basic. — вкладка «Параметры». — это собственноikki имеющейся фиксированной нумерации устранить: несмежных ячеек). Но другого листа. В, расположенный на листе
Франции.(Проверка данных).H А в имениExcel. ячейкеnewVal = Target
и знаков препинания. Для этого щелкаем Тип данных –
одномерный массив нужных: Вы знаете, как предметов можно упростить1) При выборе при попытке сделать зависимости от выбранного Список и определяемыйИз этой статьи ВыОткроется диалоговое окно. Так, например, рядом диапазона нельзя ставитьВыделяем диапазон ячеек. ЕстьApplication.Undo


с пробел. Имя диапазона всех списков сразумногоуровневые зависимые выпадающие списки
oldval = Target куда войдут названия по названию листаВвести значения, из которыха уж по макрос? списка? соседней ячейке справа проверку данных выдаётся выпадающий список.Этот диапазон формируется с
сделать простейшие связанные(Проверка вводимых значений).France напишем так «Зимние_пальто».
вместе с шапкой в ExcelIf Len(oldval) <> диапазонов. и переходим по будет складываться выпадающий
какому событию это
Вот и яСпасибо. остаётся прежний класс, сообщение об ошибке.Суть проблемы: помощью формулы массива выпадающие списки вМы хотим дать пользователюстоит индекс Но формула ДВССЫЛ таблицы списков –
. Это, когда, в 0 And oldvalКогда поставили курсор в вкладке «Исходный текст». список, можно разными делать, или по не знаюikki даже если такого Эту проблему я

у нас это зависимости от выбранных <> newVal Then поле «Источник», переходим Либо одновременно нажимаем способами: кнопке, или одноразовоjurij271: посмотрите вариант. класса в данном частично решил через на котором вЕСЛИ(СЧЁТЕСЛИ(Ведомость;СотрудникиИсх);»»;СТРОКА(СотрудникиИсх)-СТРОКА($A$1)); можете взять этот
вариантов, поэтому в, который соответствует списку диапазон. Тогда формулу диапазон А1:D4. На данных в первом
Target = Target на лист и клавиши Alt +Вручную через «точку-с-запятой» в — смотрите сами: Нет. В силуизменения коснулись формулы предмете не существует.

поле городов нужно написать так. закладке «Формулы» в столбце выпадающего списка, & «,» & выделяем попеременно нужные
excel-office.ru
Создаем связанные выпадающие списки в Excel – самый простой способ!
F11. Копируем код поле «Источник».Юрий М ничтожно малого опыта для имени «Классы» Логичным была бы котором формируется нужный А8 … находятсяПеречень элементов так называемого использовать его дляAllow2 =ДВССЫЛ(ПОДСТАВИТЬ(A2;» «;»_»)) разделе «Определенные имена» меняется выпадающий список newVal ячейки. (только вставьте своиВвести значения заранее. А
: Я делаю так: работы с VBA и макроса очистка ячейки с список из данных данные для выпадющего Динамического выпадающего списка решения реальных задач.(Тип данных) выберите. Позже Вы увидите,Если список на нажимаем функцию «Создать в ячейках второгоElseТеперь создадим второй раскрывающийся
параметры).Private Sub Worksheet_Change(ByVal в качестве источника[A1].Validation.Add Type:=xlValidateList, Formula1:=Join(arr, реализовать выпадающие спискип.3 я, честно классом при выборе с Листа1, располагаемых списка №1. Выпадающий не является статичным,Урок подготовлен для ВасList как этот индекс другом листе, то из выделенного фрагмента». столбца, третьего, т.д.Target = newVal список. В нем Target As Range) указать диапазон ячеек «,»)Arr — одномерный через макрос я говоря, не понял. нового предмета. Решение в соседних ячейках. список №1 должен он динамически изменяется командой сайта office-guru.ru(Список). Это активирует будет использован. в формуле указываем
В появившемся диалоговомЗдесь разберёмEnd If должны отражаться те Dim lReply As со списком. массив не могу. Предполагаю,jurij271 аналогичной проблемы рассматривалось Но в данном появляться при выделении в зависимости от
Источник: http://www.excel-user.com/2011/02/cascading-validation-lists.html полеЕсли Вы работаете в название этого листа. окне оставляем галочкудвухуровневый зависимый выпадающий списокIf Len(newVal) = слова, которые соответствуют Long If Target.Cells.CountНазначить имя для диапазонаjurij271 что это возможно,: Уважаемый, ikki, большое на страничке с случае в выпадающем ячейки В3, В4,.. введенных в диапазонПеревел: Антон Андронов
Source Excel 2010, то Напишем так. =ДВССЫЛ(»Размеры!А2:А4») только у строки в Excel 0 Then Target.ClearContents выбранному в первом
> 1 Then значений и в: Уважаемые старожилы форума хотя я (опять Вам спасибо за созданием связанных списков списке появляются пусты В9 на Листе2. Ведомость значений.Автор: Антон Андронов(Источник), где необходимо
можете создать лист-источник
Нажимаем «ОК». Теперь «В строке выше»..Application.EnableEvents = True
списке названию. Если Exit Sub If поле источник вписать
Максим Зеленский иЮрий же, по причине решение имевшейся проблемы. и Николай Павлов строки, если не Причём, если данные1. Введите в ячейкуРазрешим ввод в столбец указать имя диапазона в отдельной рабочей во втором столбцеНажимаем «ОК». Всё, именаНапример, в первомEnd If «Деревья», то «граб», Target.Address = «$C$2″ это имя.
М, спасибо за малого опыта) могуИмеется небольшой нюанс,
предложил для её все ячейки с в какой-либо изА13 только неповторяющихся значений со странами. Введите книге. Если же установлены выпадающие списки, присвоены. На закладке столбце из выпадающегоEnd Sub «дуб» и т.д. Then If IsEmpty(Target)Любой из вариантов даст подсказку с выпадающим ошибаться — ведь который был замечен решения следующий макрос: исходными данными с ячеек А2, А5,на листе Ведомость с использованием специального в этом поле у Вас версия которые меняются, в «Формулы» нажимаем функцию списка выбрали «Пальто».Не забываем менять диапазоны Вводим в поле Then Exit Sub такой результат. списком. Попробовал адаптировать даже у Вас в ходе тестированияPrivate Sub Worksheet_Change(ByVal Листа1 заполнены. (этот А8 … отсутствуют, любое значение из Выпадающего списка. Для «=Country» и жмите Excel 2003 года, зависимости от того, «Диспетчер имен». Во втором столбце на «свои». Списки «Источник» функцию вида If WorksheetFunction.CountIf(Range(«Деревья»), Target) к своему проекту эта задача вызывает файла с решением: Target As Excel.Range) способ — в то она присутствовать Выпадающего списка (например,
этого необходимо динамически
ОК
и Вы планируете что написано вЗдесь перечислены все наши появился выпадающий список создаем классическим способом. =ДВССЫЛ(E3). E3 – = 0 ThenНеобходимо сделать раскрывающийся список — получилось. Выпадающий затруднение. Но вПри расположении классовIf Target.Address(False, False)
файле Пример1) в выпадающем списке Сидоров)
модифицировать Выпадающий список,. Теперь нам нужно использовать именованный диапазон, ячейках первого столбца. диапазоны списков. Проверили размеров этого пальто. А всю остальную ячейка с именем lReply = MsgBox(«Добавить со значениями из
список предметов работает. любом случае уже не подряд, в = «C4» ThenПотому пришёл к №1 не должна2. Попробуйте ввести в последовательно исключая из сделать второй раскрывающийся
то значения должны Получилось так.
всё. Можно подкорректировать
А, если в
работу будут делать
office-guru.ru
Создание списка неповторяющихся значений с использованием Динамического выпадающего списка в MS EXCEL
первого диапазона. введенное имя « динамического диапазона. Если В этой части предложенное Вами решение выпадающем списке классов Range(«D4»).ClearContents выводу, что без (т.е., чтобы в
ячейку него только что список, чтобы пользователи находиться в тойКопируем формулу вниз по
Задача
размер диапазона. Мы первом столбце этой макросы.Бывает, когда из раскрывающегося & _ Target вносятся изменения в есть следующая проблема можно использовать в могут присутствовать пустыеEnd Sub
Решение
макроса в этой этом списке неА14 введенные значения. могли выбрать город.
же книге, можно столбцу. Мы создали уменьшили размер диапазона же ячейки изНа вкладке «Разработчик» находим списка необходимо выбрать & » в
имеющийся диапазон (добавляются — выпадающий список аналогичных задачах. строки, либо отсутствоватьДля одной пары
задаче не обойтись. было пустых строк)снова фамилию Сидоров.Статья является продолжением идей Мы поместим этот на другом листе. двухуровневый выпадающий список «Юбка», чтобы в
выпадающего списка выбрали инструмент «Вставить» – сразу несколько элементов. выпадающий список?», vbYesNo или удаляются данные), не обновляется. ПервымЧестно говоря, когда
- классы (пример такой ячеек макрос работает, Так как опыт
- 2) На Листе1 Это сделать невозможно, высказанных в статье
- раскрывающийся список вМы будем использовать именованные
- в Excel. выпадающем списке не
- «Брюки», то во
«ActiveX». Здесь нам Рассмотрим пути реализации + vbQuestion) If они автоматически отражаются запуском макрос нормально начинал поиск решения
ситуации — в если скопиравать его
написания программ на
имеются данные для
т.к. она отсутствует
Создание списка неповторяющихся ячейку диапазоны и сделаемДругой способ сделать было пустой строки. втором столбце будет нужна кнопка «Поле
Тестируем
задачи. lReply = vbYes в раскрывающемся списке. отрабатывается, а при проблемы со связанными приложенном файле). Понимаю,
для другой пары VBA у меня выпадающего списка №2 в списке. значений с использованиемB2 так, чтобы эти
связанный выпадающий списокТеперь устанавливаем выпадающий список с со списком» (ориентируемсяСоздаем стандартный список с Then Range(«Деревья»).Cells(Range(«Деревья»).Rows.Count +Выделяем диапазон для выпадающего следующем обращении к выпадающими списками, то что появляется эта ячеек (например, расположенных невелик (делаю свой в ячейках В2,С2,D2…;Однако, Проверка данных не
excel2.ru
Значение или выпадающий список в зависимости от значения другой ячейки
ранее определенного списка.. А теперь внимание
связанные выпадающие списки в Excel, смотритепервый выпадающий список в размерами брюк. на всплывающие подсказки). помощью инструмента «Проверка 1, 1) = списка. В главном нему выдаётся ошибка. полагал, что эта проблема из-за принципа снизу, естественно, с первый проект) и В5,С5,D5…; В8,С8,D8 …. позволяет гарантировано запретитьСоздадим список сотрудников, которые – фокус! Нам работали во всех в статье «Как ячейки столбца А
Итак, сделаем две
Щелкаем по значку – данных». Добавляем в Target End If меню находим инструмент
Причина — уже задача уже решена формирования списка классов указанием их имён), в синтаксисе данного
CyberForum.ru
Создание выпадающего списка с данными из несмежных ячеек + связанные с ними списки
Выпадающий список №2 ввод повторов: если должны получить премию. нужно проверить содержимое версиях Excel. Следующий сделать связанные выпадающие.
таблицы. Саму таблицу становится активным «Режим исходный код листа End If End «Форматировать как таблицу». имеющийся выпадающий список (задача казалась мне (подсчитывается количество непустых
то класс при
языка я не должен появляться при выделить ячейку Список должен содержать ячейки с названием шаг – создать списки в ExcelУ нас, в сделаем на странице конструктора». Рисуем курсором готовый макрос. Как If End SubОткроются стили. Выбираем любой. в ячейке. (если достаточно распространённой). Оказалось, ячеек и тем выборе нового предмета силён, то при выделении ячейки С3,А14
неповторяющиеся фамилии (иначе страны (ячейка B1), именованные диапазоны для легко». примере, мы выделяем книги «Таблица». А (он становится «крестиком») это делать, описаноСохраняем, установив тип файла Для решения нашей его удалить, макрос что нет. В самым определяется количество не удаляется. Даже необходимости написания программы С4, С5 …
и нажать сочетание кто-то получит 2
чтобы получить индекс наших списков. На
ПРЕДСТАВЬТЕ СИТУАЦИЮ: диапазон A2:A3. И, списки сделаем на небольшой прямоугольник – выше. С его «с поддержкой макросов».
задачи дизайн не опять срабатывает). Пробовал любом случае, пусть строк, которые нужно если данный способ запускаю макрорекордер и на Листе2. Причём,
клавиш или 3 премии!) соответствующий базе данных вкладкеМы хотим создать
через «Проверки данных» странице «Размеры». У место будущего списка.
помощью справа отПереходим на лист со
имеет значения. Наличие перед формирующимся выпадающим найденное решение поможет выводить в списке) заработает, то решение пытаюсь разобраться в данные для списка
CTRL+D и все сотрудники с городами. ЕслиFormulas в Excel небольшую на закладке «Данные», нас есть такаяЖмем «Свойства» – открывается выпадающего списка будут списком. Вкладка «Разработчик» заголовка (шапки) важно. списком выполнять его тем, кто столкнётся и решить её этой задачи, конечно, полученном коде. Так №2 должны браться, то в ячейку должны быть из пользователь выберет(Формулы) есть команда табличку, где можно устанавливаем выпадающие списки. таблица. перечень настроек. добавляться выбранные значения.Private — «Код» - В нашем примере удаление (макросом, записанным с аналогичной проблемой. можно таком же будет некрасивое (48
вот в коде из соответствующей строки будет скопировано вышерасположенное компании (иначе премиюPortugalName Manager выбрать страну и Тип данных –И мы сделали такиеВписываем диапазон в строку Sub Worksheet_Change(ByVal Target «Макросы». Сочетание клавиш это ячейка А1 через макрорекордер). ВЕщё раз выражаю способом, что и однотипных макросов!). Полагаю, выпадающего списка нужно в зависимости от значение. Добавим Условное получат чужие!)., то мы должны
(Диспетчер имён). Нажав соответствующий ей город. выбираем «Список». А списки. ListFillRange (руками). Ячейку, As Range) On для быстрого вызова со словом «Деревья». этом случае выпадающий Вам свою благодарность способ формирования списка что логичным было вместо непрерывного диапазона значения выбранного в
форматирование для отображенияСначала создадим на листе обратиться к базе
на нее, откроется
При этом с в строке «Источник»Внимание! куда будет выводиться Error Resume Next – Alt + То есть нужно список даже не за помощь. с предметами (осуществлять бы решение через
=$A$2:$A$23 указать несмежные
ячейке слева. введенных в этом Список в диапазоне с индексом диалоговое окно помощью выпадающих списков, указываем имя диапазона.В списках названия выбранное значение – If Not Intersect(Target, F8. Выбираем нужное
выбрать стиль таблицы формируется. Восстанавливается работоспособностьikki
нумерацию ячеек, содержащих массив — при ячейки с данымиКонкретный пример находится случае повторов.А2:А153Name Manager необходимо ограничить доступные Например, «=Наименование_товара». столбцов (В, С, в строку LinkedCell. Range(«Е2:Е9»)) Is Nothing имя. Нажимаем «Выполнить». со строкой заголовка. удалением списка «вручную».: я тоже.
классы и «вытаскивать» изменении элемента, соответствующего
из Листа1. в прилагаемом файле.svvgm
перечень сотрудников компании
, в которой хранятся(Диспетчер имён). пользователям варианты странПодробнее, как установить D) должны полностью Для изменения шрифта And Target.Cells.Count =Когда мы введем в Получаем следующий видТак что вно «в лоб» их в список предмету, удалять содержимоеSub Макрос2() Range(«B4».SelectВерсия Excel -: Здравствуйте! (см. файле примера). названия городов Португалии.Нажмите кнопку и городов, из выпадающий список, смотрите совпадать с названием и размера –
1 Then Application.EnableEvents пустую ячейку выпадающего диапазона: этой части задачи не получилось. по наличию возле ячейки справа. Хотя, With Selection.Validation .Delete 2003!Помогите пожалуйста вСоздадим Динамический диапазон СотрудникиИсх Мы воспользуемся функциейNew которых они могут в статье «Выпадающий в первом столбце Font. = False If списка новое наименование,Ставим курсор в ячейку, стоит проблема с»в лоб» - них номера). Но может есть решение .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,Буду очень признателен вопросе: есть выпадающий
с формулой =СМЕЩ(Cписок!$A$2;;;СЧЁТЗ(Cписок!$A$2:$A$15)).ВПР(Создать), чтобы добавить выбирать. В первой список в Excel». (у нас –Скачать пример выпадающего списка Len(Target.Offset(0, 1)) = появится сообщение: «Добавить где будет находиться обновлением списка. это написать пользовательскую не лучше ли более простое? Operator:= _ xlBetween, за помощь в
список в ячейке
Наличие Динамического диапазона(VLOOKUP) для поиска
новый именованный диапазон. ячейке мы сделаемУстанавливаем
это наименование товараПри вводе первых букв
0 Then Target.Offset(0, введенное имя баобаб выпадающий список. ОткрываемПри формировании второго
функцию, которая возвращала было бы решение2) Выпадающий список Formula1:=»=$A$2:$A$23″ .IgnoreBlank =
написании данного макроса, А2 (ремонт, на позволит добавлять/ удалять значения из ячейки Откроется диалоговое окно выбор страны, азависимые выпадающие списки в – ячейки А2:А4 с клавиатуры высвечиваются 1) = Target в выпадающий список?». параметры инструмента «Проверка выпадающего списка (зависимого) бы массив. через макрос? Ведь с классами содержал True .InCellDropdown = либо за информацию линии, хранение), хочу фамилии в перечнеB1New Name во второй будут столбце В должны совпадать с подходящие элементы. И Else Target.End(xlToRight).Offset(0, 1)Нажмем «Да» и добавиться данных» (выше описан решил реализовать идеюпочему-то этот массив формирование обоих списков в том числе True .InputTitle = с решениями похожих сделать так чтобы сотрудников без редактированияв таблице с(Создание имени). доступны только принадлежащие. ячейками В1:D1). это далеко не = Target End еще одна строка путь). В поле предложенную ikki, (с
однотипное и, внеся и пустые ячейки, «» .ErrorTitle = задач. значение в ячейке других формул. названиями стран. ПослеВ поле выбранной стране города.Это второй уровень
Если наименований много, все приятные моменты If Target.ClearContents Application.EnableEvents со значением «баобаб». «Источник» прописываем такую
функцией пользователя, поскольку меня к проверке список в массив,
в которых классов «» .InputMessage =ikki В2 менялось в
Ведомость для начисления премии того как индекс
Name Думаю, это понятно? выпадающих списков. то столбец можно данного инструмента. Здесь = True EndКогда значения для выпадающего функцию: количество массивов для данных. обращаться к его не было. Для «» .ErrorMessage =: и в чём зависимости от значения разместим на листе будет известен, мы(Имя) введите имяИтак, давайте начнём наш
Внимание! транспонировать в строку. можно настраивать визуальное If End Sub списка расположены наПротестируем. Вот наша таблица зависимых списков будутт.к. списки короткие элементам и осуществлять списка, в котором «» .ShowInput = именно Вам требуется в А2, т.е
Ведомость в диапазоне выберем список, которыйCountry
простой пример сПеред тем, как
Как это сделать, представление информации, указывать
Чтобы выбранные значения показывались другом листе или со списком на расти в геометрической
— можно пробовать выборку по определённым для предметов отведено True .ShowError =
«помощь»? я в чтобы при значенииА11:А24
станет источником данныхдля нашего первого того, как можно устанавливать выпадающие списки смотрите в статье в качестве источника
снизу, вставляем другой в другой книге,
одном листе: прогрессии по мере иначе. признакам было бы 5 ячеек этот
True End With Вашем файле даже А2=»ремонт», В2 менялся
. для нашего второго именованного диапазона, а
создать связанный (или в столбце В, «Как поменять местами сразу два столбца. код обработчика.Private Sub стандартный способ неДобавим в таблицу новое роста уровней вложенностипри активации ячейки
проще чем через недостаток несущественнен. В End Sub заготовки макроса не на «неисправен», при
Создадим Динамический диапазон Ведомость выпадающего списка. Для в поле зависимый) выпадающий список выберите в первой
столбцы и строкиAdam19
Worksheet_Change(ByVal Target As работает. Решить задачу значение «елка».
списков). Конечно, «реализовать проверять принадлежность нужному встроенные функции? Кроме реализуемом же проектеikki нашёл. «На линии» менялся с формулой =СМЕЩ(Ведомость!$A$11;;;СЧЁТЗ(Ведомость!$A$11:$A$24)). этого напишем такуюRefers to в Excel? В верхней ячейке столбца в Excel» тут.: Здравствуйте, подскажите как Range) On Error можно с помощьюТеперь удалим значение «береза». идею» это громко диапазону и создавать того, так, наверное, на классы отводится: один доп.столбец, одинили под этим на «исправен» А Наличие Динамического диапазона формулу:(Диапазон) выберите тот, ячейке А любое значение.Как настроить Excel,
сделать так что Resume Next If функции ДВССЫЛ: онаОсуществить задуманное нам помогла
сказано, так как для текущей ячейки проще будет реализовать 10 ячеек и доп.диапазон, два имени словом Вы подразумеваете ПРИ «хранение» была позволит добавлять/ удалять=CHOOSE(VLOOKUP(B1,Sheet3!$A$3:$B$5,2,FALSE),England,France,Portugal) в котором хранитсяB1 Главное, чтобы эта чтобы при добавлении бы если в Not Intersect(Target, Range(«Н2:К2»)) сформирует правильную ссылку «умная таблица», которая составлял эту функцию
список в виде при необходимости и
planetaexcel.ru
Выпадающий список в Excel с помощью инструментов или макросов
выпадающий список ужебез макросов «напишите возможность выбора «исправен» фамилии в ведомости=ВЫБОР(ВПР(B1;Sheet3!$A$3:$B$5;2;ЛОЖЬ);England;France;Portugal) список стран:
мы будем выбирать ячейка не была ячеек в список ячейки А1-10 значение Is Nothing And на внешний источник легка «расширяется», меняется. впервые. Понимаю, что константы. вложенные списки следующих
Создание раскрывающегося списка
некрасив (много пустыхjurij271вместо или «неисправен» т.е для начисления премии
Что же делает эта=Sheet3!$A$3:$A$5 страну, а в пустой. У нас
- столбца A, автоматически ФРУКТ то в
- Target.Cells.Count = 1 информации.Теперь сделаем так, чтобы в функции есть
- но пока не уровней (т.е. решение строк) и неудобен: ikki, большое Вам

меня»? чтобы появлялся выпадающий
без редактирования других
Выпадающий список в Excel с подстановкой данных
формула? Она ищетНажмите ячейке – это ячейка писалось название нового ячейках B1-10 значения Then Application.EnableEvents =Делаем активной ячейку, куда
- можно было вводить ошибка. Нужна корректировка хочется. будет универсальным, да
- (появляется полоса прокрутки, спасибо за помощь.Евгений Кириллов список. формул. значение из ячейкиОКB2 А2. столбца, смотрите в выпадающего списка были False If Len(Target.Offset(1, хотим поместить раскрывающийся
- новые значения прямо профессионала …jurij271 и макрос уже случается что список Буду «пристраивать» Ваше: jurij271, — сортировкаЗаранее благодарю!
Фамилии сотрудников, которым полагаетсяB1, чтобы сохранить и
– принадлежащий ейВыделяем диапазон в
статье «Как добавить
равны колонке С, 0)) = 0 список.
в ячейку сФайл с макросом: Что ж, будем задействован при очистке пуст, так как решение к моему формулой;
- AlexM премия, будем вводитьв списке стран закрыть диалоговое окно. город, как на
- столбце В (у столбец в Excel и соответственно если Then Target.Offset(1, 0)Открываем параметры проверки данных.
- этим списком. И и функцией прилагаю. надеяться, что у ячеек предметы располагаются в проекту. Можно ли- зависимы выпадающие
- : Думаю без макроса с помощью Выпадающего и возвращает соответствующийИмена диапазонам, содержащим города, примере: нас – это автоматически». если ОВОЩ то = Target Else В поле «Источник» данные автоматически добавлялисьПод выпадающим списком понимается Вас появится желание. его верхней (невидимой) ещё Вас побеспокоить списки это единственный вариант (раскрывающегося) списка. Чтобы индекс, который затем можно присвоить точноДля начала нужно создать В2:В3). Снова черезКак сделать в Excel выпадающий список со Target.End(xlDown).Offset(1, 0) = вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”). в диапазон. содержание в одной реализовать имеющиеся идеиПроблему с пустыми части). Возможно ли своими вопросами, если
- jurij271 решения.
- создать Выпадающий список использует функция таким же образом. базу данных. На функцию «Проверка данных» динамический диапазон значениями столбца D Target End If
Имя файла, из которогоСформируем именованный диапазон. Путь: ячейке нескольких значений.Юрий М строками я решил модернизировать формулу для
возникнут некоторые «подводные:Формула в источнике
Выпадающий список в Excel с данными с другого листа/файла
с фамилиями сотрудниковCHOOSEТеперь мы можем создать втором листе я выбираем «Тип данных»- чтобы размерPelena Target.ClearContents Application.EnableEvents = берется информация для «Формулы» — «Диспетчер Когда пользователь щелкает
- : Может массив не принудительным переносом классов второго списка, с
- камни» в процессеЕвгений для В2 Код
необходимо сделать следующее:(ВЫБОР), чтобы выбрать выпадающие списки в занес список стран, – список. А диапазонов списков при: Так подойдёт? True End If списка, заключено в имен» — «Создать».
Как сделать зависимые выпадающие списки
по стрелочке справа,
тот? )) в начало списка. тем, чтобы пустые «пристройки»?, спасибо за информацию. =ИНДЕКС(состояние;ПОИСКПОЗ(A2;статус;)-1) Переставил значениявыделите диапазон 1-й, 2-й или
- тех ячейках, где которые хочу дать в строке «Источник»
- добавлении или убавленииAdam19 End Sub квадратные скобки. Этот Вводим уникальное название
- появляется определенный перечень.Максим Зеленский Хотя это, конечно, строки в нёмЕщё раз спасибо. Возможно это то, в табличке состоянияА11:А24 3-й именованный диапазон. планировали выбирать данные. пользователям на выбор пишем такую формулу ячеек менялся автоматически,
Выбор нескольких значений из выпадающего списка Excel
: Да но надоЧтобы выбираемые значения отображались файл должен быть диапазона – ОК. Можно выбрать конкретное.
- : недавно кто-то такое «половинчатое» решение, т.е. отсутствовали?jurij271 что мне нужно. и статуса.на листе Ведомость;Вот так будет выглядеть Выделите ячейку в первом раскрывающемся =ДВССЫЛ(А2) смотрите в статье как то сделать в одной ячейке, открыт. Если книгаСоздаем раскрывающийся список вОчень удобный инструмент Excel решение показывал пользователю не будет3) И ещё: ikki, «пристроил» Ваше Буду разбираться.jurij271вызовите инструмент Проверка данных наш второй раскрывающийсяB1
- списке, а вЭтой формулой мы говорим «Чтобы размер таблицы это в автоматическом разделенные любым знаком с нужными значениями любой ячейке. Как для проверки введенныхесли уже есть предоставлено возможности произвольного один момент, который решение к своемуikki: Здравствуйте. После долгих (Данные/ Работа с список:(в ней мы соседнем столбце указал Excel, что список
- Excel менялся автоматически». по порядке, т.к препинания, применим такой находится в другой это сделать, уже
данных. Повысить комфорт массив, содержащий именно
размещения элементов списка в общем-то несущественнен,
проекту. Поскольку в, спасибо за внимание безуспешных попыток по данными/ Проверка данных);
В результате мы получим
будем выбирать страну),
числовой индекс, который
нужно показывать, в
Теперь нужно присвоить список у мекня модуль.
папке, нужно указывать известно. Источник – работы с данными
нужный перечень строк
в заданном диапазоне.
но возможно упростит
качестве образца прикладывал к поставленной мной
поиску информации для
на вкладке Параметры выберите
два связанных (или
откройте вкладку соответствует одному из зависимости от значения имена всем этим состоит из 500+Private Sub Worksheet_Change(ByVal
Выпадающий список с поиском
- путь полностью. имя диапазона: =деревья. позволяют возможности выпадающих с названиями классовPS: 1) Массив решение задачи: На
- примерный файл, то задаче. Извиняюсь за решения имеющейся проблемы тип данных Список; зависимых) выпадающих списка.Data
- списков городов. Списки в ячейке столбца
- спискам. У нас строк Target As Range)Возьмем три именованных диапазона:Снимаем галочки на вкладках списков: подстановка данных, или предметов, то взят из проекта,
листе «Предмет-Классы» у
в процессе пристройки отсутствие конкретных проблемных решил обратиться нав поле Формула введите: Если мы выбираем(Данные), нажмите городов располагаются правее А. в списках четыреPelena
exceltable.com
Выпадающий список в зависимости от ячейки (Формулы/Formulas)
On Error ResumeЭто обязательное условие. Выше «Сообщение для ввода», отображение данных другого его (если правильно для данного примера каждого класса уже пришлось немного изменить вопросов — попробую форум. =Сотрудники странуData Validation
в столбцахЗдесь все просто.
диапазона (четыре столбца).: Увеличить диапазон. Нет? Next описано, как сделать «Сообщение об ошибке». листа или файла, помню) можно присвоить можно использовать и
предполагается номер. Для условие (в зависимости
excelworld.ru
их конкретизировать. Решение
При создании какой-либо формы для заполнения самый лучший способ введения данных — это выпадающие списки.
Они позволяют стандартизировать варианты ответов и не дают возможности человеку заполняющему фурму вносить свои фразы и слова, предлагают готовые ответы, которые в дальнейшем легко анализировать и обрабатывать.
Существует один незначительный недостаток выпадающих списков – для большого количества вариантов ответа списки получаются очень длинными.
Как сократить длину выпадающих списков?
Для сокращения длины списка его следует разбить на несколько списков сформированных по разным критериям. И сделать так, чтобы в ячейке появлялся список соответствующий нужному критерию.
Например, существует список различных продуктов, этот список очень большой, чтобы упростить список следует разделить продукты по категориям: фрукты, овощи, молочные, мясные и т.д.
| Список продуктов. | |
| Бананы | Перловая каша |
| Ванильный сахар | Петрушка |
| Горох сушеный | Просо |
| Горчица молотая | Рис |
| Греча | Рыба Сом |
| Грибы | Сало копченое |
| Дрожжи сухие | Сахар обычный |
| Желатин | Сахарная пудра |
| Какао порошок | Свинина |
| Какао порошок | Сгущённое молоко |
| Карри (специя) | Сливки молочные |
| Картофель | Сливочное масло |
| Кефир | Сметана |
| Килька в томате | Смородина |
| Консервированная кукуруза | Сода |
| Консервированный горошек | Соевый соус |
| Корица | Соль |
| Котлеты свиные | Спагетти |
| Кофе | Суповой набор куриный |
| Крабовые палочки | Суповой набор мясной |
| Крахмал | Сухие грибы |
| Крупа кукурузная | Сыр |
| Крыжовник | Творог зернистый |
| Курица (филе, бедра, окорочка) | Тесто |
| Лавровый лист | Томатная паста |
| Лимон | Укроп сушеный |
| Лук | Уксус обычный |
| Макароны | Фасоль |
| Малина | Чай зеленый |
| Манка | Чай Каркаде |
| Маргарин | Чай черный |
| Масло растительное | Черный перец |
| Масло сливочное | Чеснок |
| Мед | Шпинат |
| Перец | Яблоки |
| Яйца |

Как реализовать зависимый выпадающий список?
- Для начала необходимо присвоить ячейкам имя:
- Выделяется диапазон ячеек;
- Во вкладке «формулы» выбирается кнопка «присвоить имя»;
- Ячейкам присваивается имя соответствующее их категории (например, для овощей имя «Овощи»);
-
- На новом листе создается форма для заполнения:
- В первой ячейке создается выпадающий список, состоящий из имен ячеек (категорий: овощи, фрукты и т.д.)
Выбирается вкладка «Данные» -> «Проверка данных»
Выбирается «Список» и указывается диапазон, из которого будут выбираться значения.
Нажимаем «ОК»
- Во второй ячейке создается список, зависящий от первого.
Создается список аналогично с первым, но в качестве источника данных выбирается не диапазон ячеек, а функция ДВССЫЛ(). В качестве аргумента функции указывается адрес первой ячейки со списком категории.
В итоге получаем два списка зависящих друг от друга.
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 и Google таблицах смотрите ниже. Приятного просмотра!
Начнем с основ. Для того, чтобы создать выпадающий список потребуется список с данными и инструмент «Проверка данных».
Выбираем ячейку, в которой будем создавать выпадающий список. Далее переходим к инструменту «Проверка данных», тип данных – «Список». В поле «Источник» указываем диапазон списка.
Выпадающий список готов!
Такой способ позволяет представить обычный диапазон в виде выпадающего списка. Повторы данных остались в списке (в диапазоне A2:A16 названия городов повторяются и в выпадающем списке они также повторяются). Это, конечно, не удобно. О том, как сделать выпадающий список уникальных значений в Excel мы поговорим далее, пока остановимся на этом варианте.
Как создать зависимый выпадающий список в Excel?
Существует несколько вариантов. Один из них, это сочетание именованных диапазонов и функции ДВССЫЛ.
Именованный диапазон в Excel – это ячейка (или диапазон ячеек), которой присвоено имя.
Функция ДВССЫЛ в Excel преобразовывает текст в ссылку.
Способ 1: именованные диапазоны + функция ДВССЫЛ
Для начала создадим именованные диапазоны с адресами. Имя каждому присвоим в соответствии с городом.
Алгоритм создания именованного диапазона: выделяем диапазон, далее «Формулы» – «Задать имя».
У нас получится 5 именованных диапазона: Волгоград, Воронеж, Краснодар, Москва и Ростов_на_Дону.
Обратите внимание, к именам диапазонов есть список требований. Например, в имени не могут содержаться пробелы, запятые, дефисы и прочие символы. Подробнее о создании именованных диапазонов и работе с ними мы говорим в нашем бесплатном курсе Основы Excel.
Поэтому, вместо дефисов в названии города Ростов-на-Дону мы укажем допустимый символ – нижнее подчеркивание.
Именованные диапазоны готовы.
Теперь выбираем ячейку для второго выпадающего списка, того, который будет зависимым. Переходим к инструменту «Проверка данных», тип данных – «Список». В поле «Источник» указываем функцию: =ДВССЫЛ(D2), где D2 – это адрес ячейки с первым выпадающим списком городов.
В ячейке D2, которая используется в качестве аргумента функции ДВССЫЛ, находится текстовое выражение, которое совпадает с именем соответствующего именованного диапазона с названиями городов. В результате функция возвращает ссылку на соответствующий именованный диапазон.
Зависимый выпадающий список адресов готов.
Меняя значения в ячейке D2, меняются списки в ячейке E2. За исключением города Ростов-на-Дону. В выпадающем списке городов (ячейка D2), в названии используется дефис, а в именованном диапазоне – нижнее подчеркивание.
Чтобы устранить это несоответствие, перед тем как применять функцию ДВССЫЛ, обработаем значения функцией ПОДСТАВИТЬ.
Функция ПОДСТАВИТЬ заменяет определенный текст в текстовой строке на новое значение. Вместо: =ДВССЫЛ(D2) укажем: =ДВССЫЛ(ПОДСТАВИТЬ(D2;"-";"_"))
То есть, мы проводим предварительную обработку значений, чтобы они соответствовали правилам написания имён. Если в названии города имеются дефисы, они будут заменены на нижнее подчеркивание.
Теперь зависимый выпадающий список работает и для города, содержащего в названии дефисы – Ростов-на-Дону. Вернемся к выпадающему списку городов.
Как автоматически обновить выпадающий список в Excel, при добавлении новых данных?
Для начала создадим из диапазона данных «умную» таблицу Excel. Сделать это можно сочетанием клавиш Ctrl+T.
Одним из полезных свойств умной таблицы является растягивающийся диапазон. То есть, если мы будем добавлять новые строки, они автоматически будут попадать в выпадающий список. Например, добавим новый город – Санкт-Петербург. И вот, он уже появился в нашем первом выпадающем списке.
Как сделать выпадающий список уникальных значений в Excel?
Надоело смотреть на повторяющиеся названия городов в выпадающем списке. Реализуем выпадающий список так, чтобы названия городов в нем не повторялись. Для этого, добавим слева вспомогательный столбец. Мы дали ему название – «Уникальные».
И включим новый столбец в диапазон «умной» таблицы. «Конструктор» – «Размер таблицы». Вместо =$B$1:$C$17 указываем: =$A$1:$C$17
Визуально видно, что диапазон «умной» таблицы Excel расширился. Включать этот столбец в диапазон таблицы необходимо для того, чтобы при добавлении новых данных, пересчет уникальных городов происходил автоматически.
В ячейку А2 добавим формулу массива, которая будет формировать список уникальных городов:
=ЕСЛИОШИБКА(ИНДЕКС([Город];ПОИСКПОЗ(0;СЧЁТЕСЛИ(A$1:A1; [Город]);0));"")
Чтобы Excel воспринял нашу формулу, как формулу массива, жмем Ctrl + Shift + Enter.
Получаем список уникальных городов, который при добавлении новых строк будет автоматически обновляться.
Из списка уникальных городов создадим именованный диапазон (мы назвали его — «Уникальные»), который затем используем в качестве источника для выпадающего списка городов.
«Проверка данных» – «Список». В источнике данных, вместо предыдущего диапазона с названиями городов =$B$2:$B$18, задаем имя – =Уникальные
Как видим, список уникальных значений мы получили, но в придачу у нас остались совершенно ненужные пустые строки из таблицы.
Чтобы их убрать, доработаем именованный диапазон «Уникальные». В диспетчере имен, вместо диапазона =Таблица1[Уникальные] используем: =СМЕЩ(Лист1!$A$2;0;0;СЧЁТЗ(Таблица1[Уникальные])-СЧИТАТЬПУСТОТЫ(Таблица1[Уникальные]))
где: Лист1!$A$2 – ячейка со значением первого пункта списка уникальных значений
Таблица1[Уникальные] – столбец с перечнем всех пунктов списка
Выпадающий список уникальных автоматически обновляемых значений готов.
Вернемся к зависимому списку с адресами. Выпадающий список городов теперь динамический, а вот адреса так и остались фиксированными именованными диапазонами.
Как сделать автоматически обновляемый зависимый список? Способ 2: СМЕЩ+ПОИСКПОЗ+СЧЁТЕСЛИ
Именованные диапазоны, которые мы до этого использовали в сочетании с функцией ДВССЫЛ можно удалить, далее они нам не пригодятся. Рассмотрим способ создания зависимого, автоматически обновляемого выпадающего списка.
В ячейку F2 (зависимый выпадающий список адресов) вместо: =ДВССЫЛ(ПОДСТАВИТЬ(E2;"-";"_")) вставляем: =СМЕЩ($B$2;ПОИСКПОЗ(E2;$B$2:$B$18;0)-1;1;СЧЁТЕСЛИ($B$2:$B$18;E2);1)
Для корректной работы этого способа, данные в столбце с городом должны быть отсортированы. Функция СМЕЩ будет динамически ссылаться только на ячейки адресов определенного города.
Аргументы функции:
Ссылка – берем первую ячейку нашего списка, т.е. $B$2
Смещение по строкам – считает функция ПОИСКПОЗ, которая выдает порядковый номер ячейки с выбранным городом (E2) в заданном диапазоне ($B$2:$B$18)
Смещение по столбцам = 1, т.к. мы хотим сослаться на адреса в соседнем столбце (С)
Высота – вычисляем с помощью функции СЧЁТЕСЛИ, которая подсчитывает количество встретившихся в диапазоне ($B$2:$B$18) нужных нам значений – названий городов (E2)
Ширина = 1, т.к. нам нужен один столбец с адресами
Готово! Добавляем новые данные, сортируем список и пользуемся зависимыми, автоматически обновляемыми выпадающими списками. При необходимости можно скопировать выпадающие списки на строки ниже, они будут корректно работать. При копировании выпадающих списков обращайте внимание на адрес ссылок. Абсолютные ссылки остаются неизменными при копировании, относительные – меняют адрес ячеек относительно нового места.
С выпадающими списками в Google таблицах все немного иначе.
Выпадающий список в Google таблицах
В Google таблицах есть аналогичный инструмент для создания выпадающих списков – «Проверка данных».
Выделяем ячейку, в которой будем размещать выпадающий список.
«Данные» – «Настроить проверку данных» – «Значение из диапазона»
Важное отличие от проверки данных Excel в том, что инструмент «Проверка данных» в Google таблицах автоматически выдает уникальные значения, и значит, нам не придется создавать вспомогательный столбец с расчетами.
Зависимый выпадающий список в Google таблицах
Возвращаемся к двум основным способам, которые мы рассмотрели в Excel.
Способ 1: именованные диапазоны + ДВССЫЛ
Создадим именованные диапазоны с адресами. Имя каждому присвоим в соответствии с городом.
Выделяем ячейки – «Данные» – «Настроить именованные диапазоны»
Указываем имя и жмем готово. У нас получится 5 именованных диапазонов: Волгоград, Воронеж, Краснодар, Москва и Ростов_на_Дону.
Также, как и в Excel, в Google таблицах к именам диапазонов есть список требований.
Поэтому, вместо дефисов в названии города Ростов-на-Дону укажем допустимый символ – нижнее подчеркивание.
В Google таблицах мы не сможем подобно Excel задать функцию ДВССЫЛ в инструменте «Проверка данных». Поэтому, разместим результат функции ДВССЫЛ в пустых ячейках правее. Не забываем добавить обработку значений от дефисов функцией ПОДСТАВИТЬ. Подробнее о том, для чего это нужно, мы говорили ранее в примере Excel.
В ячейке F1 введем: =ДВССЫЛ(ПОДСТАВИТЬ(D2;"_";"-"))
Последний штрих в создании зависимого выпадающего списка, в разделе «Настроить проверку данных», в качестве диапазона указываем список из столбца F:F.
При дальнейшей работе вспомогательный столбец F можно скрыть. Минус такого метода – отсутствие динамичности. Если мы добавим новый город и адрес, то они не появятся в созданных выпадающих списках. Но это решаемо!
Как автоматически обновить выпадающий список в Google таблицах при добавлении новых данных?
В выпадающем списке городов, достаточно расширить диапазон и вместо =$A$2:$A$16 указать: =$A$2:$A. Теперь при добавлении нового города он автоматически появляется в выпадающем списке.
Как автоматически обновить зависимый выпадающий список в Google таблицах при добавлении новых данных?
Для того, чтобы зависимый выпадающий список автоматически обновлялся с добавлением новых данных, воспользуемся функцией СМЕЩ.
В ячейке G6 укажем:
=СМЕЩ($A$2;ПОИСКПОЗ($D$7;$A$2:$A;0)-1;1;СЧЁТЕСЛИ($A$2:$A;$D$7);1)
Важно: для корректной работы этого способа, данные в столбце с городом должны быть отсортированы от А до Я, или от Я до А. Подробнее о том, как в данном случае работает функция СМЕЩ читайте выше в примере с Excel.
Заключительным этапом поместим результат функции СМЕЩ в диапазон выпадающего списка.
Скроем вспомогательные столбцы для удобства.
Работа выпадающих списков в Google таблицах хоть и схожа с Excel, но все же имеет свои отличительные особенности. Добавляем новые данные, сортируем список и пользуемся зависимыми, автоматически обновляемыми выпадающими списками.
Заключение
Теперь Вам известны несколько способов, как создать выпадающие списки в Excel и Google таблицах. Смотрите примеры и создавайте нужные Вам выпадающие списки.
Изучить работу в программе Excel Вы можете на наших курсах: бесплатные онлайн-курсы по Excel
Пройдите бесплатный тест на нашем сайте, чтобы объективно оценить свой уровень владения инструментами и функциями программы Excel: пройти бесплатный тест

























































































