Разные списки при разных значениях excel

Связанные (зависимые) выпадающие списки

Способ 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. Умные таблицы

Этот подход очень похож на предыдущий, но использует вместо именованных диапазонов — «умные» динамические таблицы, которые будут выступать источником данных для вторичного списка:

Связанные списки на умных таблицах и ДВССЫЛ

Таким образом, мы:

  1. Сначала преобразуем наши справочники в «умные» таблицы, используя сочетание клавиш Ctrl+T или команду Главная — Форматировать как таблицу (Home — Format as Table) и
  2. Даём им имена (Фрукты, Овощи, Зелень) на вкладке Конструктор (Design) в поле Имя таблицы (Table Name).
  3. Создаём первый и второй (связанный) выпадающие списки точно так же, как в предыдущем способе с функцией ДВССЫЛ (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, т.к. нам нужен один столбец с моделями

В итоге должно получиться что-то вроде этого:

linked_dropdowns4.gif

Осталось добавить выпадающий список на основе созданной формулы к ячейке 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 для проверки введенных данных. Повысить комфорт работы с данными позволяют возможности выпадающих списков: подстановка данных, отображение данных другого листа или файла, наличие функции поиска и зависимости.

Создание раскрывающегося списка

Путь: меню «Данные» — инструмент «Проверка данных» — вкладка «Параметры». Тип данных – «Список».

Создание выпадающего списка.

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

  1. Вручную через «точку-с-запятой» в поле «Источник».
  2. Ввод значений.

  3. Ввести значения заранее. А в качестве источника указать диапазон ячеек со списком.
  4. Проверка вводимых значений.

  5. Назначить имя для диапазона значений и в поле источник вписать это имя.

Имя диапазона.
Раскрывающийся список.

Любой из вариантов даст такой результат.



Выпадающий список в Excel с подстановкой данных

Необходимо сделать раскрывающийся список со значениями из динамического диапазона. Если вносятся изменения в имеющийся диапазон (добавляются или удаляются данные), они автоматически отражаются в раскрывающемся списке.

  1. Выделяем диапазон для выпадающего списка. В главном меню находим инструмент «Форматировать как таблицу».
  2. Форматировать как таблицу.

  3. Откроются стили. Выбираем любой. Для решения нашей задачи дизайн не имеет значения. Наличие заголовка (шапки) важно. В нашем примере это ячейка А1 со словом «Деревья». То есть нужно выбрать стиль таблицы со строкой заголовка. Получаем следующий вид диапазона:
  4. Выпадающий список.

  5. Ставим курсор в ячейку, где будет находиться выпадающий список. Открываем параметры инструмента «Проверка данных» (выше описан путь). В поле «Источник» прописываем такую функцию:

Ввод значения в источник.

Протестируем. Вот наша таблица со списком на одном листе:

Список и таблица.

Добавим в таблицу новое значение «елка».

Добавлено значение елка.

Теперь удалим значение «береза».

Удалено значение береза.

Осуществить задуманное нам помогла «умная таблица», которая легка «расширяется», меняется.

Теперь сделаем так, чтобы можно было вводить новые значения прямо в ячейку с этим списком. И данные автоматически добавлялись в диапазон.

Ввод данных из списка.

  1. Сформируем именованный диапазон. Путь: «Формулы» — «Диспетчер имен» — «Создать». Вводим уникальное название диапазона – ОК.
  2. Создание имени.

  3. Создаем раскрывающийся список в любой ячейке. Как это сделать, уже известно. Источник – имя диапазона: =деревья.
  4. Снимаем галочки на вкладках «Сообщение для ввода», «Сообщение об ошибке». Если этого не сделать, Excel не позволит нам вводить новые значения.
  5. Сообщение об ошибке.

  6. Вызываем редактор Visual Basic. Для этого щелкаем правой кнопкой мыши по названию листа и переходим по вкладке «Исходный текст». Либо одновременно нажимаем клавиши Alt + F11. Копируем код (только вставьте свои параметры).
  7. Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim lReply As Long
     
        If Target.Cells.Count > 1 Then Exit Sub
        If Target.Address = "$C$2" Then
         If IsEmpty(Target) Then Exit Sub
           If WorksheetFunction.CountIf(Range("Деревья"), Target) = 0 Then
              lReply = MsgBox("Добавить введенное имя " & _
                             Target & " в выпадающий список?", vbYesNo + vbQuestion)
              If lReply = vbYes Then
                  Range("Деревья").Cells(Range("Деревья").Rows.Count + 1, 1) = Target
              End If
           End If
         End If
    End Sub
     
  8. Сохраняем, установив тип файла «с поддержкой макросов».
  9. Сообщение об ошибке.

  10. Переходим на лист со списком. Вкладка «Разработчик» — «Код» — «Макросы». Сочетание клавиш для быстрого вызова – Alt + F8. Выбираем нужное имя. Нажимаем «Выполнить».

Макрос.

Когда мы введем в пустую ячейку выпадающего списка новое наименование, появится сообщение: «Добавить введенное имя баобаб в выпадающий список?».

Нажмем «Да» и добавиться еще одна строка со значением «баобаб».

Выпадающий список в Excel с данными с другого листа/файла

Когда значения для выпадающего списка расположены на другом листе или в другой книге, стандартный способ не работает. Решить задачу можно с помощью функции ДВССЫЛ: она сформирует правильную ссылку на внешний источник информации.

  1. Делаем активной ячейку, куда хотим поместить раскрывающийся список.
  2. Открываем параметры проверки данных. В поле «Источник» вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).

Имя файла, из которого берется информация для списка, заключено в квадратные скобки. Этот файл должен быть открыт. Если книга с нужными значениями находится в другой папке, нужно указывать путь полностью.

Как сделать зависимые выпадающие списки

Возьмем три именованных диапазона:

Три именованных диапазона.

Это обязательное условие. Выше описано, как сделать обычный список именованным диапазоном (с помощью «Диспетчера имен»). Помним, что имя не может содержать пробелов и знаков препинания.

  1. Создадим первый выпадающий список, куда войдут названия диапазонов.
  2. Список диапазонов.

  3. Когда поставили курсор в поле «Источник», переходим на лист и выделяем попеременно нужные ячейки.
  4. Таблица со списком.

  5. Теперь создадим второй раскрывающийся список. В нем должны отражаться те слова, которые соответствуют выбранному в первом списке названию. Если «Деревья», то «граб», «дуб» и т.д. Вводим в поле «Источник» функцию вида =ДВССЫЛ(E3). E3 – ячейка с именем первого диапазона.
  6. Второй раскрывающийся список.

    Выбор нескольких значений из выпадающего списка Excel

    Бывает, когда из раскрывающегося списка необходимо выбрать сразу несколько элементов. Рассмотрим пути реализации задачи.

    1. Создаем стандартный список с помощью инструмента «Проверка данных». Добавляем в исходный код листа готовый макрос. Как это делать, описано выше. С его помощью справа от выпадающего списка будут добавляться выбранные значения.
    2. Private Sub Worksheet_Change(ByVal Target As Range)
          On Error Resume Next
          If Not Intersect(Target, Range("Е2:Е9")) Is Nothing And Target.Cells.Count = 1 Then
              Application.EnableEvents = False
              If Len(Target.Offset(0, 1)) = 0 Then
                  Target.Offset(0, 1) = Target
              Else
                  Target.End(xlToRight).Offset(0, 1) = Target
              End If
              Target.ClearContents
              Application.EnableEvents = True
          End If
      End Sub
       
    3. Чтобы выбранные значения показывались снизу, вставляем другой код обработчика.
    4. Private Sub Worksheet_Change(ByVal Target As Range)
          On Error Resume Next
          If Not Intersect(Target, Range("Н2:К2")) Is Nothing And Target.Cells.Count = 1 Then
              Application.EnableEvents = False
              If Len(Target.Offset(1, 0)) = 0 Then
                  Target.Offset(1, 0) = Target
              Else
                  Target.End(xlDown).Offset(1, 0) = Target
              End If
              Target.ClearContents
              Application.EnableEvents = True
          End If
      End Sub
       
    5. Чтобы выбираемые значения отображались в одной ячейке, разделенные любым знаком препинания, применим такой модуль.

    6. Private Sub Worksheet_Change(ByVal Target As Range)
          On Error Resume Next
          If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then
              Application.EnableEvents = False
              newVal = Target
              Application.Undo
              oldval = Target
              If Len(oldval) <> 0 And oldval <> newVal Then
                  Target = Target & "," & newVal
              Else
                  Target = newVal
              End If
              If Len(newVal) = 0 Then Target.ClearContents
              Application.EnableEvents = True
          End If
      End Sub

    Не забываем менять диапазоны на «свои». Списки создаем классическим способом. А всю остальную работу будут делать макросы.

    Выпадающий список с поиском

    1. На вкладке «Разработчик» находим инструмент «Вставить» – «ActiveX». Здесь нам нужна кнопка «Поле со списком» (ориентируемся на всплывающие подсказки).
    2. Вставить ActiveX.

    3. Щелкаем по значку – становится активным «Режим конструктора». Рисуем курсором (он становится «крестиком») небольшой прямоугольник – место будущего списка.
    4. Элемент ActiveX.

    5. Жмем «Свойства» – открывается перечень настроек.
    6. Свойства ActiveX.

    7. Вписываем диапазон в строку ListFillRange (руками). Ячейку, куда будет выводиться выбранное значение – в строку LinkedCell. Для изменения шрифта и размера – Font.

    Скачать пример выпадающего списка

    При вводе первых букв с клавиатуры высвечиваются подходящие элементы. И это далеко не все приятные моменты данного инструмента. Здесь можно настраивать визуальное представление информации, указывать в качестве источника сразу два столбца.


Создадим выпадающий список, содержимое которого зависит от значений другой ячейки.

Обычный

Выпадающий (раскрывающийся) список

отображает только один перечень элементов.

Связанный список

– это такой

выпадающий список

, который может отображать разные перечни элементов, в зависимости от значения другой ячейки. Потребность в создании

связанных списков

(другие названия:

связанные диапазоны

,

динамические списки

) появляется при моделировании иерархических структур данных. Например:


  • Отдел



    Сотрудники отдела

    . При выборе отдела из списка всех отделов компании, динамически формируется список, содержащий перечень фамилий всех сотрудников этого отдела (двухуровневая иерархия);

  • Город – Улица – Номер дома

    . При заполнении адреса проживания можно из списка выбрать

    город

    , затем из списка всех улиц этого города –

    улицу

    , затем, из списка всех домов на этой улице –

    номер дома

    (трехуровневая иерархия).

В этой статье рассмотрен только двухуровневый

связанный список

. Многоуровневый связанный список рассмотрен в одноименной статье

Многоуровневый связанный список

. Создание иерархических структур данных позволяет избежать неудобств

выпадающих списков

связанных со слишком большим количеством элементов.

Связанный список

можно реализовать в EXCEL, с помощью инструмента

Проверка данных

(

) с условием проверки

Список

(пример создания приведен в данной статье) или с помощью

элемента управления формы

Список

(см. статью

Связанный список на основе элемента управления формы

).

Создание

Связанного списка

на основе

Проверки данных

рассмотрим на конкретном примере.


Задача

: Имеется перечень

Регионов

, состоящий из названий четырех регионов. Для каждого

Региона

имеется свой перечень

Стран

. Пользователь должен иметь возможность, выбрав определенный

Регион

, в соседней ячейке выбрать из

Выпадающего списка

нужную ему

Страну

из этого

Региона

.

Таблицу, в которую будут заноситься данные с помощью

Связанного списка

, разместим на листе

Таблица

. См.

файл примера

Связанный_список.xlsx

Список регионов и перечни стран разместим на листе

Списки

.

Обратите внимание, что названия регионов (диапазон

А2:А5

на листе

Списки

) в точности должны совпадать с заголовками столбцов, содержащих названия соответствующих стран (

В1:Е1

).

Присвоим

имена

диапазонам, содержащим

Регионы

и

Страны

(т.е. создадим

Именованные диапазоны

). Быстрее всего это сделать так:

  • выделитьячейки

    А1:Е6

    на листе

    Списки

    (т.е. диапазон, охватывающий все ячейки с названиями

    Регионов

    и

    Стран

    );
  • нажать кнопку «Создать из выделенного фрагмента» (пункт меню

    );

  • Убедиться, что стоит только галочка «В строке выше»;
  • Нажать ОК.

Проверить правильность имени можно через

Диспетчер Имен

(

). Должно быть создано 5 имен.

Можно подкорректировать диапазон у имени

Регионы

(вместо

=списки!$A$2:$A$6

установить

=списки!$A$2:$A$5

, чтобы не отображалась последняя пустая строка)

На листе

Таблица

, для ячеек

A

5:

A

22

сформируем

выпадающий список

для выбора

Региона

.

  • выделяем ячейки

    A

    5:

    A

    22

    ;
  • вызываем инструмент

    Проверка данных

    ;

  • устанавливаем тип данных –

    Список

    ;
  • в поле

    Источник

    вводим:

    =Регионы

Теперь сформируем

выпадающий список

для столбца

Страна

(это как раз и будет желанный

Связанный список

).

  • выделяем ячейки

    B

    5:

    B

    22

    ;
  • вызываем инструмент

    Проверка данных;
  • устанавливаем тип данных –

    Список

    ;
  • в поле

    Источник

    вводим:

    =ДВССЫЛ(A5)

Важно, чтобы при создании правила

Проверки данных

активной ячейкой была

B5

, т.к. мы используем

относительную адресацию

.

Тестируем. Выбираем с помощью

выпадающего списка

в ячейке

A

5

Регион



Америка

, вызываем

связанный список

в ячейке

B

5

и балдеем – появился список стран для

Региона

Америка

:

США, Мексика

Теперь заполняем следующую строку. Выбираем в ячейке

A

6

Регион



Азия

, вызываем

связанный список

в ячейке

B

6

и опять балдеем:

Китай, Индия

Необходимо помнить, что в именах нельзя использовать символ пробела. Поэтому, при создании имен, вышеуказанным способом, он будет автоматически заменен на нижнее подчеркивание «_». Например, если вместо

Америка

(ячейка

В1

) ввести «

Северная Америка

» (соответственно подкорректировав ячейку

А2

), то после нажатия кнопки

Создать из выделенного фрагмента

будет создано имя «Северная_Америка». В этом случае формула

=ДВССЫЛ(A5)

работать не будет, т.к. при выборе региона «

Северная Америка

» функция

ДВССЫЛ()

не найдет соответствующего имени. Поэтому формулу можно подкорректировать, чтобы она работала при наличии пробелов в названиях

Регионов

:

=ДВССЫЛ(ПОДСТАВИТЬ(A5;» «;»_»))

.

Теперь о

недостатках

. При создании имен с помощью кнопки меню

Создать из выделенного фрагмента,

все

именованные диапазоны

для перечней

Стран

были созданы одинаковой длины (равной максимальной длине списка для региона Европа (5 значений)). Это привело к тому, что

связанные списки

для других регионов содержали пустые строки.

Конечно, можно вручную откорректировать диапазоны или даже вместо

Именованных диапазонов

создать

Динамические диапазоны

. Но, при большом количестве имен делать это будет достаточно трудоемко. Кроме того, при добавлении новых

Регионов

придется вручную создавать

именованные диапазоны

для их

Стран

.

Чтобы не создавать десятки имен, нужно изменить сам подход при построении

Связанного списка

. Рассмотрим этот подход в другой статье:

Расширяемый Связанный список

.

Выпадающий список уникальных значений. Автоматическое обновление выпадающего списка

Введение

Выпадающий список — это супер полезный инструмент, который способствует более комфортной работе с информацией. Он позволяет вместить в ячейку сразу несколько значений, с которыми можно работать, как и с любыми другими. Чтобы выбрать нужное, достаточно щелкнуть на значок стрелки, после чего отобразится перечень значений. После выбора конкретного, ячейка автоматически заполняется им.

Рассмотрим особенности создания выпадающих списков на примере:

Исходные данные:

  • Список адресов в разных городах

Задача:

  • Создать автоматически обновляемый выпадающий список уникальных городов
  • На основе выбранного города, создать зависимый выпадающий список адресов

Визуализация задачи

Мы будем двигаться поэтапно, уделяя внимание всем возможностям данного инструмента.

Скачать файлы из этой статьи

Рабочие файлы

Обзорное видео о работе с выпадающими списками в Excel и Google таблицах смотрите ниже. Приятного просмотра!

Начнем с основ. Для того, чтобы создать выпадающий список потребуется список с данными и инструмент «Проверка данных».

Выбираем ячейку, в которой будем создавать выпадающий список. Далее переходим к инструменту «Проверка данных», тип данных – «Список». В поле «Источник» указываем диапазон списка.

Указываем диапазон с данными для выпадающего списка

Выпадающий список готов!

Простой выпадающий список готов

Такой способ позволяет представить обычный диапазон в виде выпадающего списка. Повторы данных остались в списке (в диапазоне A2:A16 названия городов повторяются и в выпадающем списке они также повторяются). Это, конечно, не удобно. О том, как сделать выпадающий список уникальных значений в Excel мы поговорим далее, пока остановимся на этом варианте.

Как создать зависимый выпадающий список в Excel?

Существует несколько вариантов. Один из них, это сочетание именованных диапазонов и функции ДВССЫЛ.

Именованный диапазон в Excel – это ячейка (или диапазон ячеек), которой присвоено имя.

Функция ДВССЫЛ в Excel преобразовывает текст в ссылку.

Способ 1: именованные диапазоны + функция ДВССЫЛ

Для начала создадим именованные диапазоны с адресами. Имя каждому присвоим в соответствии с городом.

Алгоритм создания именованного диапазона: выделяем диапазон, далее «Формулы» – «Задать имя».

Пример создания именованного диапазона

У нас получится 5 именованных диапазона: Волгоград, Воронеж, Краснодар, Москва и Ростов_на_Дону.

Обратите внимание, к именам диапазонов есть список требований. Например, в имени не могут содержаться пробелы, запятые, дефисы и прочие символы. Подробнее о создании именованных диапазонов и работе с ними мы говорим в нашем бесплатном курсе Основы Excel.

Ошибка в создании именованного диапазона

Поэтому, вместо дефисов в названии города Ростов-на-Дону мы укажем допустимый символ – нижнее подчеркивание.

Корректное имя для названия с дефисами

Именованные диапазоны готовы.

Именованные диапазоны созданы

Теперь выбираем ячейку для второго выпадающего списка, того, который будет зависимым. Переходим к инструменту «Проверка данных», тип данных – «Список». В поле «Источник» указываем функцию: =ДВССЫЛ(D2), где D2 – это адрес ячейки с первым выпадающим списком городов.

В ячейке D2, которая используется в качестве аргумента функции ДВССЫЛ, находится текстовое выражение, которое совпадает с именем соответствующего именованного диапазона с названиями городов. В результате функция возвращает ссылку на соответствующий именованный диапазон.

Проверка данных. Функция ДВССЫЛ

Зависимый выпадающий список адресов готов.

Зависимый выпадающий список функцией ДВССЫЛ

Зависимый выпадающий список функцией ДВССЫЛ (2)

Меняя значения в ячейке D2, меняются списки в ячейке E2. За исключением города Ростов-на-Дону. В выпадающем списке городов (ячейка D2), в названии используется дефис, а в именованном диапазоне – нижнее подчеркивание.

Для города, в названии которого содержатся дефисы, выпадающие списки пока не отражаются

Чтобы устранить это несоответствие, перед тем как применять функцию ДВССЫЛ, обработаем значения функцией ПОДСТАВИТЬ.

Функция ПОДСТАВИТЬ заменяет определенный текст в текстовой строке на новое значение. Вместо: =ДВССЫЛ(D2) укажем: =ДВССЫЛ(ПОДСТАВИТЬ(D2;"-";"_"))

То есть, мы проводим предварительную обработку значений, чтобы они соответствовали правилам написания имён. Если в названии города имеются дефисы, они будут заменены на нижнее подчеркивание.

Выпадающий список для города, в названии которого содержатся дефисы, после обработки функцией ПОДСТАВИТЬ

Теперь зависимый выпадающий список работает и для города, содержащего в названии дефисы – Ростов-на-Дону. Вернемся к выпадающему списку городов.

Выпадающий список городов в Excel

Как автоматически обновить выпадающий список в Excel, при добавлении новых данных?

Для начала создадим из диапазона данных «умную» таблицу Excel. Сделать это можно сочетанием клавиш Ctrl+T.

Создаем умную таблицу Excel

Одним из полезных свойств умной таблицы является растягивающийся диапазон. То есть, если мы будем добавлять новые строки, они автоматически будут попадать в выпадающий список. Например, добавим новый город – Санкт-Петербург. И вот, он уже появился в нашем первом выпадающем списке.

Автоматическое обновление данных выпадающего списка

Как сделать выпадающий список уникальных значений в Excel?

Надоело смотреть на повторяющиеся названия городов в выпадающем списке. Реализуем выпадающий список так, чтобы названия городов в нем не повторялись. Для этого, добавим слева вспомогательный столбец. Мы дали ему название – «Уникальные».

Создаем вспомогательный столбец

И включим новый столбец в диапазон «умной» таблицы. «Конструктор» – «Размер таблицы». Вместо =$B$1:$C$17 указываем: =$A$1:$C$17

Визуально видно, что диапазон «умной» таблицы Excel расширился. Включать этот столбец в диапазон таблицы необходимо для того, чтобы при добавлении новых данных, пересчет уникальных городов происходил автоматически.

Вспомогательный столбец включен в диапазон умной таблицы 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 таблицах есть аналогичный инструмент для создания выпадающих списков – «Проверка данных».

Выделяем ячейку, в которой будем размещать выпадающий список.

«Данные» – «Настроить проверку данных» – «Значение из диапазона»

Создание выпадающего списка в Google таблицах

Важное отличие от проверки данных Excel в том, что инструмент «Проверка данных» в Google таблицах автоматически выдает уникальные значения, и значит, нам не придется создавать вспомогательный столбец с расчетами.

Выпадающий список в Google таблицах

Зависимый выпадающий список в Google таблицах

Возвращаемся к двум основным способам, которые мы рассмотрели в Excel.

Способ 1: именованные диапазоны + ДВССЫЛ

Создадим именованные диапазоны с адресами. Имя каждому присвоим в соответствии с городом.

Выделяем ячейки – «Данные» – «Настроить именованные диапазоны»

Указываем имя и жмем готово. У нас получится 5 именованных диапазонов: Волгоград, Воронеж, Краснодар, Москва и Ростов_на_Дону.

Также, как и в Excel, в Google таблицах к именам диапазонов есть список требований.

Ошибка при введении некорректного имени

Поэтому, вместо дефисов в названии города Ростов-на-Дону укажем допустимый символ – нижнее подчеркивание.

Именованные диапазоны готовы

В Google таблицах мы не сможем подобно Excel задать функцию ДВССЫЛ в инструменте «Проверка данных». Поэтому, разместим результат функции ДВССЫЛ в пустых ячейках правее. Не забываем добавить обработку значений от дефисов функцией ПОДСТАВИТЬ. Подробнее о том, для чего это нужно, мы говорили ранее в примере Excel.

В ячейке F1 введем: =ДВССЫЛ(ПОДСТАВИТЬ(D2;"_";"-"))

Функция ДВССЫЛ в действии

Последний штрих в создании зависимого выпадающего списка, в разделе «Настроить проверку данных», в качестве диапазона указываем список из столбца F:F.

Зависимый выпадающий список в Google таблицах готов

Зависимый выпадающий список в Google таблицах готов (2)

При дальнейшей работе вспомогательный столбец 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 таблицах готов

Скроем вспомогательные столбцы для удобства.

Скрыли вспомогательные столбцы

Работа выпадающих списков в Google таблицах хоть и схожа с Excel, но все же имеет свои отличительные особенности. Добавляем новые данные, сортируем список и пользуемся зависимыми, автоматически обновляемыми выпадающими списками.

Заключение

Теперь Вам известны несколько способов, как создать выпадающие списки в Excel и Google таблицах. Смотрите примеры и создавайте нужные Вам выпадающие списки.

Изучить работу в программе Excel Вы можете на наших курсах: бесплатные онлайн-курсы по Excel

Пройдите бесплатный тест на нашем сайте, чтобы объективно оценить свой уровень владения инструментами и функциями программы Excel: пройти бесплатный тест

У нас Вы можете заказать выполнение задач по MS Excel и Google таблицам

Связанные выпадающие списки в 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​
​Создадим первый выпадающий список,​ правой кнопкой мыши​ «Список».​ строк.​​ это делать через​ создание первого выпадающего​ нового предмета в​ выпадающий список через​ значения формируется другой​ формулой =СМЕЩ(Cписок!$B$2;;;СЧЁТЕСЛИ(Cписок!$B$2:$B$15;»*»))​ узнали, как можно​Data Validation​
​ с​​ пробел. Имя диапазона​ всех списков сразу​​многоуровневые зависимые выпадающие списки​
​oldval = Target​ куда войдут названия​ по названию листа​Ввести значения, из которых​а уж по​ макрос?​ списка?​ соседней ячейке справа​ проверку данных выдаётся​ выпадающий список.​Этот диапазон формируется с​
​ сделать простейшие связанные​(Проверка вводимых значений).​France​ напишем так «Зимние_пальто».​
​ вместе с шапкой​​ в Excel​If Len(oldval) <>​​ диапазонов.​​ и переходим по​ будет складываться выпадающий​
​ какому событию это​
​Вот и я​Спасибо.​ остаётся прежний класс,​ сообщение об ошибке.​Суть проблемы:​ помощью формулы массива​ выпадающие списки в​Мы хотим дать пользователю​стоит индекс​ Но формула ДВССЫЛ​ таблицы списков –​
​. Это, когда, в​ 0 And oldval​Когда поставили курсор в​ вкладке «Исходный текст».​ список, можно разными​ делать, или по​ не знаю​ikki​ даже если такого​ Эту проблему я​
​1) Имеется Лист1,​=ИНДЕКС(СотрудникиИсх;НАИМЕНЬШИЙ(​ Microsoft Excel. Вы​ на выбор список​2​ не найдет этот​
​ у нас это​ зависимости от выбранных​ <> newVal Then​ поле «Источник», переходим​ Либо одновременно нажимаем​ способами:​ кнопке, или одноразово​jurij271​: посмотрите вариант.​ класса в данном​ частично решил через​ на котором в​ЕСЛИ(СЧЁТЕСЛИ(Ведомость;СотрудникиИсх);»»;СТРОКА(СотрудникиИсх)-СТРОКА($A$1));​ можете взять этот​
​ вариантов, поэтому в​, который соответствует списку​ диапазон. Тогда формулу​ диапазон А1:D4. На​ данных в первом​
​Target = Target​ на лист и​ клавиши Alt +​Вручную через «точку-с-запятой» в​ — смотрите сами​: Нет. В силу​изменения коснулись формулы​ предмете не существует.​
Связанные выпадающие списки в Excel.​ промежуточный лист, на​ ячейках А2, А5,​СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(СотрудникиИсх)))))​ простой пример и​
​ поле​ городов​ нужно написать так.​ закладке «Формулы» в​ столбце выпадающего списка,​ & «,» &​ выделяем попеременно нужные​

excel-office.ru

Создаем связанные выпадающие списки в Excel – самый простой способ!

​ F11. Копируем код​​ поле «Источник».​Юрий М​ ничтожно малого опыта​ для имени «Классы»​ Логичным была бы​ котором формируется нужный​ А8 … находятся​Перечень элементов так называемого​ использовать его для​Allow​2​ =ДВССЫЛ(ПОДСТАВИТЬ(A2;» «;»_»))​ разделе «Определенные имена»​ меняется выпадающий список​ newVal​ ячейки.​ (только вставьте свои​Ввести значения заранее. А​

​: Я делаю так:​ работы с VBA​ и макроса​ очистка ячейки с​ список из данных​ данные для выпадющего​ Динамического выпадающего списка​​ решения реальных задач.​​(Тип данных) выберите​. Позже Вы увидите,​Если список на​​ нажимаем функцию «Создать​​ в ячейках второго​Else​Теперь создадим второй раскрывающийся​

Связанный выпадающий список в Excel

​ параметры).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​​(Список). Это активирует​ будет использован.​ в формуле указываем​

Связанный выпадающий список в Excel

​ В появившемся диалоговом​Здесь разберём​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,..​​ введенных в диапазон​​Перевел: Антон Андронов​

Связанный выпадающий список в Excel

​Source​​ Excel 2010, то​​ Напишем так. =ДВССЫЛ(»Размеры!А2:А4»)​ только у строки​ в Excel​​ 0 Then Target.ClearContents​​ выбранному в первом​

Связанный выпадающий список в Excel

​ > 1 Then​​ значений и в​​: Уважаемые старожилы форума​​ хотя я (опять​​ Вам спасибо за​ созданием связанных списков​ списке появляются пусты​​ В9 на Листе2.​​ Ведомость значений.​Автор: Антон Андронов​(Источник), где необходимо​

​ можете создать лист-источник​

​Нажимаем «ОК». Теперь​​ «В строке выше».​​.​Application.EnableEvents = True​

Связанный выпадающий список в Excel

​ списке названию. Если​ Exit Sub If​ поле источник вписать​

​ Максим Зеленский иЮрий​ же, по причине​ решение имевшейся проблемы.​ и Николай Павлов​ строки, если не​​ Причём, если данные​​1. Введите в ячейку​Разрешим ввод в столбец​ указать имя диапазона​​ в отдельной рабочей​​ во втором столбце​​Нажимаем «ОК». Всё, имена​​Например, в первом​End If​ «Деревья», то «граб»,​​ Target.Address = «$C$2″​​ это имя.​

Связанный выпадающий список в Excel

​ М, спасибо за​​ малого опыта) могу​​Имеется небольшой нюанс,​

Связанный выпадающий список в Excel

​ предложил для её​ все ячейки с​ в какой-либо из​А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)​ в выпадающем списке​ Сидоров)​

Связанный выпадающий список в Excel

​ модифицировать Выпадающий список,​. Теперь нам нужно​ использовать именованный диапазон,​ ячейках первого столбца.​ диапазоны списков. Проверили​​ размеров этого пальто.​​ А всю остальную​ ячейка с именем​ lReply = MsgBox(«Добавить​ со значениями из​

Связанный выпадающий список в Excel

​ список предметов работает.​ любом случае уже​ не подряд, в​ = «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​
​ вот в коде​ из соответствующей строки​ будет скопировано вышерасположенное​ компании (иначе премию​Portugal​Name 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:А15​3​Name 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 =​ либо за информацию​ линии, хранение), хочу​ фамилии в перечне​B1​New 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​ страну, а в​ пустой. У нас​

  1. ​ столбца A, автоматически​ ФРУКТ то в​Ввод значений.
  2. ​ Target.Cells.Count = 1​ информации.​Теперь сделаем так, чтобы​ в функции есть​Проверка вводимых значений.
  3. ​но пока не​ уровней (т.е. решение​ строк) и неудобен​: ikki, большое Вам​

Имя диапазона. Раскрывающийся список.

​меня»?​ чтобы появлялся выпадающий​

​ без редактирования других​

Выпадающий список в Excel с подстановкой данных

​ формула? Она ищет​Нажмите​ ячейке​ – это ячейка​ писалось название нового​ ячейках B1-10 значения​ Then Application.EnableEvents =​Делаем активной ячейку, куда​

  1. ​ можно было вводить​ ошибка. Нужна корректировка​ хочется.​ будет универсальным, да​Форматировать как таблицу.
  2. ​ (появляется полоса прокрутки,​ спасибо за помощь.​Евгений Кириллов​ список.​ формул.​ значение из ячейки​ОК​B2​ А2.​ столбца, смотрите в​ выпадающего списка были​ False If Len(Target.Offset(1,​ хотим поместить раскрывающийся​Выпадающий список.
  3. ​ новые значения прямо​ профессионала …​jurij271​ и макрос уже​ случается что список​ Буду «пристраивать» Ваше​: jurij271, — сортировка​Заранее благодарю!​

Ввод значения в источник.

​Фамилии сотрудников, которым полагается​B1​, чтобы сохранить и​

Список и таблица.

​– принадлежащий ей​Выделяем диапазон в​

Добавлено значение елка.

​ статье «Как добавить​

Удалено значение береза.

​ равны колонке С,​ 0)) = 0​ список.​

​ в ячейку с​Файл с макросом​: Что ж, будем​ задействован при очистке​ пуст, так как​ решение к моему​ формулой;​

Ввод данных из списка.

  1. ​AlexM​ премия, будем вводить​в списке стран​ закрыть диалоговое окно.​ город, как на​Создание имени.
  2. ​ столбце В (у​ столбец в Excel​ и соответственно если​ Then Target.Offset(1, 0)​Открываем параметры проверки данных.​
  3. ​ этим списком. И​ и функцией прилагаю.​ надеяться, что у​ ячеек​ предметы располагаются в​ проекту. Можно ли​- зависимы выпадающие​Сообщение об ошибке.
  4. ​: Думаю без макроса​ с помощью Выпадающего​ и возвращает соответствующий​Имена диапазонам, содержащим города,​ примере:​ нас – это​ автоматически».​ если ОВОЩ то​ = Target Else​ В поле «Источник»​ данные автоматически добавлялись​Под выпадающим списком понимается​ Вас появится желание​.​ его верхней (невидимой)​ ещё Вас побеспокоить​ списки​ это единственный вариант​ (раскрывающегося) списка. Чтобы​ индекс, который затем​ можно присвоить точно​Для начала нужно создать​ В2:В3). Снова через​Как сделать в Excel​ выпадающий список со​ Target.End(xlDown).Offset(1, 0) =​ вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).​ в диапазон.​ содержание в одной​ реализовать имеющиеся идеи​Проблему с пустыми​ части). Возможно ли​ своими вопросами, если​
  5. ​jurij271​ решения.​Сообщение об ошибке.
  6. ​ создать Выпадающий список​ использует функция​ таким же образом.​ базу данных. На​ функцию «Проверка данных»​ динамический диапазон​ значениями столбца D​ Target End If​

Макрос.

​Имя файла, из которого​Сформируем именованный диапазон. Путь:​ ячейке нескольких значений.​Юрий М​ строками я решил​ модернизировать формулу для​

​ возникнут некоторые «подводные​:​Формула в источнике​

Выпадающий список в Excel с данными с другого листа/файла

​ с фамилиями сотрудников​CHOOSE​Теперь мы можем создать​ втором листе я​ выбираем «Тип данных»​- чтобы размер​Pelena​ Target.ClearContents Application.EnableEvents =​ берется информация для​ «Формулы» — «Диспетчер​ Когда пользователь щелкает​

  1. ​: Может массив не​ принудительным переносом классов​ второго списка, с​
  2. ​ камни» в процессе​Евгений​ для В2 Код​

​ необходимо сделать следующее:​(ВЫБОР), чтобы выбрать​ выпадающие списки в​ занес список стран,​ – список. А​ диапазонов списков при​: Так подойдёт?​ True End If​ списка, заключено в​ имен» — «Создать».​

Как сделать зависимые выпадающие списки

​ по стрелочке справа,​

Три именованных диапазона.

​ тот? ))​ в начало списка.​ тем, чтобы пустые​ «пристройки»?​, спасибо за информацию.​ =ИНДЕКС(состояние;ПОИСКПОЗ(A2;статус;)-1) Переставил значения​выделите диапазон​ 1-й, 2-й или​

  1. ​ тех ячейках, где​ которые хочу дать​ в строке «Источник»​Список диапазонов.
  2. ​ добавлении или убавлении​Adam19​ End Sub​ квадратные скобки. Этот​ Вводим уникальное название​Таблица со списком.
  3. ​ появляется определенный перечень.​Максим Зеленский​ Хотя это, конечно,​ строки в нём​Ещё раз спасибо.​ Возможно это то,​ в табличке состояния​А11:А24​ 3-й именованный диапазон.​ планировали выбирать данные.​ пользователям на выбор​ пишем такую формулу​ ячеек менялся автоматически,​Второй раскрывающийся список.

    Выбор нескольких значений из выпадающего списка Excel

    ​: Да но надо​Чтобы выбираемые значения отображались​ файл должен быть​ диапазона – ОК.​ Можно выбрать конкретное.​

    1. ​: недавно кто-то такое​ «половинчатое» решение, т.е.​ отсутствовали?​jurij271​ что мне нужно.​ и статуса.​на листе Ведомость;​Вот так будет выглядеть​ Выделите ячейку​ в первом раскрывающемся​ =ДВССЫЛ(А2)​ смотрите в статье​ как то сделать​ в одной ячейке,​ открыт. Если книга​Создаем раскрывающийся список в​Очень удобный инструмент Excel​ решение показывал​ пользователю не будет​3) И ещё​: ikki, «пристроил» Ваше​ Буду разбираться.​jurij271​вызовите инструмент Проверка данных​ наш второй раскрывающийся​B1​
    2. ​ списке, а в​Этой формулой мы говорим​ «Чтобы размер таблицы​ это в автоматическом​ разделенные любым знаком​ с нужными значениями​ любой ячейке. Как​ для проверки введенных​если уже есть​ предоставлено возможности произвольного​ один момент, который​ решение к своему​ikki​: Здравствуйте. После долгих​ (Данные/ Работа с​ список:​(в ней мы​ соседнем столбце указал​ Excel, что список​
    3. ​ Excel менялся автоматически».​ по порядке, т.к​ препинания, применим такой​ находится в другой​ это сделать, уже​
      ​ данных. Повысить комфорт​ массив, содержащий именно​
      ​ размещения элементов списка​ в общем-то несущественнен,​
      ​ проекту. Поскольку в​, спасибо за внимание​ безуспешных попыток по​ данными/ Проверка данных);​
      ​В результате мы получим​
      ​ будем выбирать страну),​
      ​ числовой индекс, который​
      ​ нужно показывать, в​
      ​Теперь нужно присвоить​ список у мекня​ модуль.​
      ​ папке, нужно указывать​ известно. Источник –​ работы с данными​
      ​ нужный перечень строк​
      ​ в заданном диапазоне.​
      ​ но возможно упростит​
      ​ качестве образца прикладывал​ к поставленной мной​
      ​ поиску информации для​
      ​на вкладке Параметры выберите​
      ​ два связанных (или​

    ​ откройте вкладку​ соответствует одному из​ зависимости от значения​ имена всем этим​ состоит из 500+​Private Sub Worksheet_Change(ByVal​

    Выпадающий список с поиском

    1. ​ путь полностью.​ имя диапазона: =деревья.​ позволяют возможности выпадающих​ с названиями классов​PS: 1) Массив​ решение задачи: На​Вставить ActiveX.
    2. ​ примерный файл, то​ задаче. Извиняюсь за​ решения имеющейся проблемы​ тип данных Список;​ зависимых) выпадающих списка.​Data​Элемент ActiveX.
    3. ​ списков городов. Списки​ в ячейке столбца​Свойства ActiveX.
    4. ​ спискам. У нас​ строк​ Target As Range)​Возьмем три именованных диапазона:​Снимаем галочки на вкладках​ списков: подстановка данных,​ или предметов, то​ взят из проекта,​

    ​ листе «Предмет-Классы» у​

    ​ в процессе пристройки​ отсутствие конкретных проблемных​ решил обратиться на​в поле Формула введите:​ Если мы выбираем​(Данные), нажмите​ городов располагаются правее​ А.​ в списках четыре​Pelena​

    exceltable.com

Выпадающий список в зависимости от ячейки (Формулы/Formulas)

​On Error Resume​​Это обязательное условие. Выше​ «Сообщение для ввода»,​ отображение данных другого​ его (если правильно​ для данного примера​ каждого класса уже​ пришлось немного изменить​ вопросов — попробую​ форум.​ =Сотрудники​ страну​Data Validation​

​ в столбцах​​Здесь все просто.​

​ диапазона (четыре столбца).​​: Увеличить диапазон. Нет?​ Next​ описано, как сделать​ «Сообщение об ошибке».​ листа или файла,​ помню) можно присвоить​ можно использовать и​

​ предполагается номер. Для​​ условие (в зависимости​

excelworld.ru

​ их конкретизировать. Решение​

Skip to content

Как сделать зависимый выпадающий список в Excel?

Одной из наиболее полезных функций проверки данных является возможность создания выпадающего списка, который позволяет выбирать значение из предварительно определенного перечня. Но как только вы начнете применять это в своих таблицах, то неизбежно столкнетесь с проблемой: нужно сделать один выпадающий список в Excel в зависимости от значения в другом. Другими словами, как сделать динамический многоуровневый связанный список?

Вот примеры таких задач:

  • перечень городов, зависящих от выбранной страны.
  • товары, которые изготавливает определенный производитель.
  • наименования продуктов, которые входят в товарную группу.
  • выбрать модель автомобиля в зависимости от его марки.

Выглядеть это может примерно так:

Такие списки называются зависимыми, или связанными, поскольку их содержание зависит друг от друга. Такие сложные конструкции можно создавать несколькими способами.

  1. 1. Именованные диапазоны + функция ДВССЫЛ.
    • А как быть с пробелами?
  2. 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, из которого можно выбрать одно из нескольких заранее заданных значений. Это удобно для быстрого и правильного заполнения данных: не вбивать руками, а просто выбрать. Тут же можно настроить контроль, чтобы пользователи не могли вносить значения, не предусмотренные в списке.

Выпадающий список работает так: выбираете ячейку и справа от нее появляется кнопка со стрелкой вниз (правда, стрелка больше похожа на треугольник).

После нажатия на кнопку списка появится перечень доступных значений, одно из которых можно выбрать.

Значений в списке может быть много, но в обзор помещается до 8 строк. Если значений в списке больше восьми, справа от них появится полоса прокрутки.

Создание выпадающего списка

Чтобы создать выпадающий список, выделите ячейку, где он должен появиться (или группу ячеек) и перейдите на вкладку Данные -> Проверка данных.

меню excel, проверка данных

В появившемся окне укажите тип данных – Список, поставьте галочку рядом со строкой «Список допустимых значений».

excel, проверка значений

Источником данных может быть:

  • Текст – пишется через точку с запятой «;» и без знака равно «=», например
    Материалы;Заработная плата;Амортизация
  • Ссылки на ячейки:
    =$A$1:$A$7
  • Именованный диапазон:
    =ИмяДиапазона

и т.д.

Связанные выпадающие списки

Связанные выпадающие списки – это списки, в которых выпадающие значения появляются не «просто так», а в зависимости от уже заполненных данных. Так, для выбранной группы появится только список входящих в неё наименований.

excel, связанные выпадающие списки

Создадим выпадающие списки несколькими способами – для разных таблиц с исходными данными.

Способ 1. Названия групп в заголовках столбцов, в строках – элементы групп.

excel, таблица

Способ 2. Названия групп – в первом столбце, элементы групп – во втором столбце.

excel, таблица

Способ 1. Связанные выпадающие списки из таблицы с группами в заголовках столбцов

Исходные данные: таблица с названиями групп в заголовках столбцов.

excel, таблица

В этом способе используется всего одна простая формула — ДВССЫЛ (правда, непривычная обычным пользователям) и форматированная smart-таблица Excel (иногда их еще называют «умные» таблицы). Зато вы получите взаимозависимые списки и будете пользоваться ими по принципу «сделал и забыл». Не нужно будет переживать о том, что «слетит» диапазон и переделывать всю архитектуру данных. Просто один раз сделаете и будете пользоваться.

Справка:

Форматированная таблица – это таблица, у которой есть свое имя, свойства и структура. Такая таблица представляет из себя именованный «саморасширяющийся» диапазон. При добавлении в нее новых данных границы таблицы автоматически «захватят» новое значение.

У форматированной таблицы множество преимуществ по сравнению с обычной. Поэтому на курсах и семинарах я советую использовать такие таблицы везде, где есть такая возможность.

Создать форматированную таблицу просто: выделите диапазон ячеек и перейдите в меню Главная -> Форматировать как таблицу -> выберите понравившийся вид таблицы. Готово – форматированная таблица создана.

Формула ДВССЫЛ передает значения из ячейки, адрес которой записан в самой формуле в виде текстовой строки.

Например, записываем в ячейке B1 адрес ячейки А1. Формула ДВССЫЛ(B1) «увидит», какой адрес записан в ячейке B1, а результатом вычисления формулы будет текст, записанный в ячейке А1. Эту же формулу можно записать, указав адрес ячейки в кавычках – ДВССЫЛ(«А1»).

excel, формула, двссыл

С помощью ДВССЫЛ можно обратиться к ячейке по адресу с помощью других формул, например СЦЕПИТЬ, & или ЕСЛИ и т.д. Так, формула на рисунке ДВССЫЛ(B1&C1) обращается к тексту в ячейке А1. После нажатия Enter в ячейке, где вводилась формула ДВССЫЛ(B1&C1) появится значение из ячейки A1, в нашем случае это «текст».

excel, формула, двссыл

Пошаговая инструкция по созданию связанных выпадающих списков

Шаг 1. Создайте справочник исходных данных в виде форматированной smart-таблицы.

  • Выделите таблицу со статьями и преобразуйте ее в smart-таблицу: выберите в меню Главная -> Форматировать как таблицу.

excel, форматированные таблицы, умные таблицы

  • В появившемся окне обязательно проверьте галочку рядом с надписью «Таблица с заголовками». Если ее нет – поставьте.

excel, форматированные таблицы

  • Присвойте созданной таблице имя: выделите любую ячейку таблицы, перейдите на вкладку Конструктор, введите имя — «Источник».

excel, имя форматированной таблицы

Таблица «Источник» создана. Теперь можно обращаться к таблице и её элементам по имени. Например, название заголовка таблицы будет выглядеть так: =Источник[#Заголовки]

excel, формулы, форматированных, умных, таблицах

Столбец таблицы: =Источник[Материалы]

Чтобы появилась такая формула, нажмите равно = и выделите столбец, его имя появится в строке формул.

excel, формулы, форматированных, умных, таблицах

Шаг 2. Создайте выпадающий список с группами.

  • Выделите ячейки в столбце «группа».
  • Перейдите в меню Данные -> Проверка данных.
  • В появившемся окне выберите тип данных — Список, а в строке Источник введите формулу =ДВССЫЛ(«Источник[#Заголовки]»)

Готово! В столбце «группа» появился выпадающий список.

excel, выпадающий список

Шаг 3. Создайте выпадающий список со статьями.

  • Выделите столбец «статья» в таблице.
  • Перейдите в меню Данные -> Проверка данных.
  • В появившемся окне выберите тип данных — Список, а в строке Источник введите формулу: =ДВССЫЛ(«Источник[«&$G3&»]»)
    В формуле $G3 – это первая ячейка из столбца «группа». Ссылка на столбец «зафиксирована» с помощью знака доллара $, а строка может изменяться.

excel, связанные выпадающие списки

Готово! В столбце «статья» появляется только список статей, входящих в группу.

excel, связанные выпадающие списки

Теперь в форматированную smart-таблицу можно добавлять новые группы и статьи. Добавим, например, новый столбец «Прочее», и такая группа сразу же появится в выпадающем списке.

Способ 2. Связанные выпадающие списки из таблицы с группами в первом столбце и элементами — во втором

Исходные данные: таблица с названиями групп в первом столбце, элементами групп – во втором столбце.

excel, таблица

На самом деле в сети можно найти несколько вариантов реализации этого способа. Но у них у всех есть один недостаток: такой список нужно «администрировать». Потому что таблица должна быть всегда отсортирована по названиям групп – нельзя, чтобы группы располагались произвольно. Если группы будут идти «как попало», то формула, с помощью которой это всё сделано (СМЕЩ) не сработает, и список будет создаваться с ошибкой. Т.е. пользователю нужно все время сортировать первый столбец или добавлять туда данные в алфавитном порядке. А еще потребуется записывать где-то отдельно сами названия групп и это тоже нужно будет делать «вручную».

Мы придумали, как обойти эту проблему: с помощью сводных таблиц, которые будут за нас упорядочивать данные. Благодаря этому постоянное «администрирование» будет заменено на простую процедуру «обновить».

Для создания списков используем форматированные (умные) таблицы, сводные таблицы, формулы СМЕЩ + ПОИСКПОЗ + СЧЁТЗ, СЧЁТЕСЛИ и диспетчер имен.

Справка:

СМЕЩ выдает ссылку на диапазон ячеек, находящийся в указанном количестве ячеек от исходной. Ссылка определяется с учетом заданного в формуле размера диапазона – числа строк и столбцов. Другими словами, этой формулой вы можете «сказать» Excel-ю на сколько ячеек он должен отступить и какой диапазон «захватить».

Синтаксис формулы СМЕЩ такой:

СМЕЩ(ссылка ; смещ_по_строкам ; смещ_по_столбцам ; [высота] ; [ширина] ), где

  • ссылка – ссылка, от которой вычисляется смещение, может быть адресом ячейки или группы ячеек;
  • смещ_по_строкам – количество строк, которые требуется отсчитать вверх или вниз от начальной ссылки;
  • смещ_по_столбцам – количество столбцов, которые требуется отсчитать влево или вправо от начальной ссылки;
  • [высота] – число строк возвращаемой ссылки (необязательный);
  • [ширина] – число столбцов возвращаемой ссылки (необязательный).

Ищет нужный нам элемент в диапазоне ячеек и выдает его порядковый номер в диапазоне.

Синтаксис ПОИСКПОЗ такой:

ПОИСКПОЗ( искомое_значение ; просматриваемый_массив ; [тип_сопоставления] )

  • искомое_значение – значение, которое ищем. Может быть числом, текстом, логическим значением или ссылкой на ячейку;
  • просматриваемый_массив – диапазон ячеек, где будем искать нужное значение;
  • [тип_сопоставления] — число -1, 0 или 1, которое показывает, как сравнивать искомое значение с ячейками просматриваемого массива. Не переживайте, если не поняли, когда и что ставить, потому что 90% случаев нужно выбирать ноль.

Подробнее про эту формулу можно посмотреть в видеоинструкции: Какая формула лучше ВПР и работает с несколькими критериями

СЧЁТЗ просто считает количество непустых ячеек в диапазоне.

Почти тот же СУММЕСЛИ, только проще – подсчитывает количество значений, соответствующих определенному условию.

Пошаговая инструкция по созданию списков

Шаг 1. Преобразуйте исходные данные в форматированную smart-таблицу.

  • Выделите таблицу со статьями и преобразуйте ее в smart-таблицу: перейдите в меню Главная -> Форматировать как таблицу.

excel, таблица

  • В появившемся окне обязательно проверьте галочку рядом с надписью «Таблица с заголовками». Если ее нет – поставьте.

excel, форматирование таблицы

  • Присвойте таблице имя: на вкладке Конструктор введите имя таблицы — «статьи».

excel, имя форматированной таблицы

Форматированная таблица «статьи» создана.

Шаг 2. Создайте две сводные таблицы – одну с названиями групп, вторую — со статьями.

Для чего используем сводные таблицы? Во-первых, чтобы вручную не создавать перечень групп, а во-вторых, как уже упоминали выше, чтобы вручную не сортировать справочники статей (что иногда забывают сделать пользователи, а это важно, иначе формула СМЕЩ «срабатывает» с ошибкой). «Ручную» работу сделает вместо нас кнопка «Обновить» в меню Данные — нажимаем ее каждый раз после появления новых статей.

  • Создайте первую сводную таблицу с группами статей.
    Выделите любую ячейку таблицы с исходными данными, перейдите в меню Вставка -> Сводная таблица. Добавьте сводную таблицу на существующий лист и поместите группы в область строк.

excel, сводные таблицы

  • Создайте вторую сводную таблицу со статьями: меню Вставка -> Сводная таблица. В область строк поместите группы и статьи.

excel, сводные таблицы

  • Форматируем сводную таблицу со статьями и придаем ей вид справочника.
    Выделите любую ячейку таблицы, перейдите на вкладку Конструктор -> Макет отчета -> Показать в табличной форме. У нас получится почти та таблица, которая нам нужна, но в ней автоматом появятся промежуточные суммы. Чтобы их отключить, идем: Промежуточные итоги -> Не показывать промежуточные суммы.

  • Скройте строку «Общий итог» в обеих таблицах справочников. Перейдите на вкладку Конструктор -> Общие итоги -> Отключить для строк и столбцов.

excel, сводные таблицы

В итоге получатся два справочника, как на рисунке ниже. Для удобства разместите таблицы рядом на одном листе – с первой строки и в столбцах A, C и D, как на рисунке (это поможет разобраться с формулой СМЕЩ).

excel, сводные таблицы

Шаг 3. Создайте именованные диапазоны с помощью диспетчера имен.

  • Откройте диспетчер имен: в меню Формулы -> Диспетчер имен.

excel, диспетчер имен

  • В появившемся окне нажмите кнопку «Создать».

excel, диспетчер имен, создать имя

    • Введите имя «ГруппыСписок» и формулу, которая будет определять диапазон:
      =СМЕЩ($A$1;1;0;СЧЁТЗ($A:$A)-1;1)

Пояснения к формуле:

СМЕЩ ( $A$1 ; 1 ; 0 ; СЧЁТЗ( $A:$A ) – 1 ; 1 ) – определяет адрес ячеек с названиями групп.

    • $A$1 – это первая ячейка в справочнике групп.
    • Следующие цифры 1 ; 0 – это отступ от первой ячейки на 1 строку и 0 столбцов (отступ нужен, потому что в первой ячейке название столбца).
    • СЧЁТЗ( $A:$A ) – 1 Считаем число непустых ячеек в столбце А. Вычитаем -1, потому что название столбца не должно быть в списке.
    • Последнее число 1 в формуле – это количество столбцов.

excel, диспетчер имен

Нажмите ОК. Названия листов в формуле появятся сами.

  • Точно так же создайте в диспетчере имен список статей.
    Введите имя ГруппыСтатей, а для диапазона – формулу:
    =СМЕЩ($C$1;ПОИСКПОЗ($G2;$C:$C;0)-1;1;СЧЁТЕСЛИ($C:$C;$G2);1)

Пояснения к формуле:

СМЕЩ ( $C$1 ; ПОИСКПОЗ ( $G2 ; $C:$C ; 0 ) – 1 ; 1 ; СЧЁТЕСЛИ( $C:$C ; $G2 ) ; 1 ) – определяет адрес ячеек с названиями статей из группы с помощью ПОИСКПОЗ, которая ищет группы статей.

  • $С$1 – это первая ячейка в столбце с группами.
  • ПОИСКПОЗ ( $G2 ; $C:$C ; 0 ) – 1 Определяет, на сколько строк нужно отступить от первой ячейки.ПОИСКПОЗ ищет название группы, выбранной в таблице с данными (столбец $G) среди ячеек справочника (столбец $C). В адресе ячейки $G2 не «закрепляем» номер строки с помощью знака $, чтобы формула работала для каждой ячейки в столбце.
  • Следующая цифра 1 – это отступ на 1 столбец вправо, т.е. переходим к столбцу «статьи», откуда нужно брать данные.
  • СЧЁТЕСЛИ( $C:$C ; $G2 ) – считаем число ячеек в столбце $C, в которых названия групп такие же, как в столбце с данными. Здесь тоже не «закрепляем» номер строки у ячейки $G2 с помощью знака $.
  • Последнее число 1 в формуле – это количество столбцов.

excel, диспетчер имен

Шаг 4. Создайте выпадающие списки.

Выделите ячейки в столбце «группы», перейдите в меню Данные -> Проверка данных. Задайте тип данных Список, источник =ГруппыСписок.

excel, проверка данных

То же самое – для статей. Тип данных – список, источник =ГруппыСтатьи

Выпадающие списки готовы. Форматированные smart-таблицы позволят «захватить» все данные, а сводные таблицы – избежать ошибок, отсортировать справочник и создать список групп.

excel, связанные выпадающие списки

Создание раскрывающегося списка в Excel, набор элементов которого зависит от выбора значения в другом выпадающем списке. Динамические диапазоны и условия.

Именованные динамические диапазоны

Для создания раскрывающихся списков будем использовать именованные динамические диапазоны, которые позволяют добавлять и удалять элементы в исходных наборах без внесения изменений в формулы.

Для динамических диапазонов создаем новый рабочий лист Excel и переименовываем его в «Списки». Заполняем столбцы наборами элементов:

Наборы элементов для раскрывающихся списков

На вкладке «Формулы» ленты инструментов нажимаем ссылку «Присвоить имя»:

Создание имени динамического диапазона

В поле «Имя» пишем «Группа», в поле «Диапазон» вставляем формулу =СМЕЩ(Списки!$A$2;0;0;СЧЁТЗ(Списки!$A:$A)-1;1) и нажимаем кнопку «OK». Первый именованный динамический диапазон создан.

Повторяем эти действия для создания остальных именованных диапазонов, формулы для которых перечислены в таблице:

Имя Диапазон
Группа =СМЕЩ(Списки!$A$2;0;0;СЧЁТЗ(Списки!$A:$A)-1;1)
Грибы =СМЕЩ(Списки!$B$2;0;0;СЧЁТЗ(Списки!$B:$B)-1;1)
Насекомые =СМЕЩ(Списки!$C$2;0;0;СЧЁТЗ(Списки!$C:$C)-1;1)
Рыбы =СМЕЩ(Списки!$D$2;0;0;СЧЁТЗ(Списки!$D:$D)-1;1)

Все имена диапазонов можно просмотреть в диспетчере имен («Формулы» — «Диспетчер имен»):

Диспетчер имен в Excel

В диспетчере имен доступно создание, изменение и удаление имен диапазонов.

Создание раскрывающегося списка

Создаем первый раскрывающийся список, от выбора значения в котором будет зависеть набор элементов второго выпадающего списка. Привяжем его к динамическому диапазону «Группа».

На листе Excel, где будет таблица с раскрывающимися списками, называем первые два столбца «Группа» и «Вид». Выбираем ячейку под названием столбца «Группа» и нажимаем ссылку «Проверка данных» на вкладке «Данные» ленты инструментов.

В открывшемся окне «Проверка вводимых значений» выбираем тип данных «Список», указываем источник «=Группа» и нажимаем кнопку «OK»:

Проверка вводимых значений для столбца «Группа» в таблице Excel

Первый выпадающий список создан. Скопировать его в другие ячейки столбца «Группа» можно простым протягиванием. Также, при присвоении источника данных диапазону ячеек, раскрывающийся список будет добавлен во все ячейки.

Раскрывающийся список по условию

Для создания выпадающего списка по условию выбираем ячейку под названием столбца «Вид» и нажимаем ссылку «Проверка данных» на вкладке «Данные» ленты инструментов. В открывшемся окне «Проверка вводимых значений» выбираем тип данных «Список», указываем источник =ЕСЛИ(A2="Грибы";Грибы;ЕСЛИ(A2="Насекомые";Насекомые;ЕСЛИ(A2="Рыбы";Рыбы;Списки!$E$1))) и нажимаем кнопку «OK».

Список, раскрывающийся с набором элементов по условию

Если в первом раскрывающемся списке (Группа) не будет выбрана ни одна позиция, во втором выпадающем списке (Вид) будет отображаться значение ячейки по адресу Списки!$E$1 (Выберите группу).


Смотрите, как для раскрывающегося списка можно использовать динамический диапазон на основе умной таблицы.

Зависимые выпадающие списки в Excel

Изучим простой способ создания зависимых (также называют связанных) выпадающих списков в Excel.

Для начала поясним, что же такое связанные выпадающие списки.
Это 2 выпадающих списка, при этом список значений одного из выпадающих списков зависит от выбора значения в другом выпадающем списке. Создать по отдельности выпадающие списки не представляет сложностей, но и связать выпадающие списки можно достаточно просто.
Для наглядности рассмотрим следующую ситуацию: у нас есть несколько категорий блюд, например, пицца, суши и паста, а также виды блюд в каждой категории (пицца Пепперони, суши Филадельфия, паста Феттучини и т.д.):


В результате мы хотим получить своеобразный двухуровневый зависимый выпадающий список: на первом уровне (списке) — категории блюд, на втором — блюда из выбранной категории.

Как сделать зависимые выпадающие списки?

В основе создания связанных выпадающих списков лежит применение функции ДВССЫЛ, которая позволяет преобразовывать текст из ячейки в ссылку.
Другими словами, если в ячейку введено текстовое значение «А1», то функция ДВССЫЛ вернет ссылку на ячейку А1.
Теперь зададим имена диапазонам состоящим из всех видов блюд каждой конкретной категории.
Для этого в панели вкладок выбираем Формулы -> Определенные имена -> Присвоить имя:


Выделяем диапазон ячеек A2:A6 и создаем диапазон с именем Пицца, аналогичные действия повторяем и для списков с суши (имя диапазона — Суши) и пастой (имя диапазона — Паста):


Обратите внимание, что при создании имен диапазонов имя не должно включать в себя пробелы.
В том случае если в названии категории все же содержится пробел (например, Японская кухня), то одним из вариантов решения является использование нижнего подчеркивания вместо пробела в имени диапазона (Японская_кухня).

Создадим первый выпадающий список в ячейке A10, состоящий из категорий блюд (Пицца, Суши и Паста). В панели вкладок выбираем Данные -> Работа с данными -> Проверка данных, указываем тип данных Список и в качестве источника выделяем диапазон A1:C1:


Теперь создаем второй выпадающий список, полностью повторяем действия с созданием первого списка, только в поле Источник записываем формулу =ДВССЫЛ(A10):


Имена созданных диапазонов обязательно должны совпадать с элементами первого списка, поэтому если в первом списке есть категории содержащие пробелы, то при обращении к имени диапазона необходимо заменить пробелы на нижние подчеркивания.
Это можно осуществить с помощью функции ПОДСТАВИТЬ, которая позволяет заменить старый текст (пробел) на новый текст (нижнее подчеркивание) в текстовой строке, т.е. в нашем случае формула примет вид =ДВССЫЛ(ПОДСТАВИТЬ(A10;» «;»_»)).
Также минусом данного способа создания списков является невозможность использования динамических именованных диапазонов.

Подробно ознакомиться с примером зависимых выпадающих списков — скачать пример.

Двухуровневый выпадающий список в Excel

Имеется несколько способов создания выпадающего списка. Выбор одного из них зависит от структуры имеющихся у вас данных.

Первый способ создания двухуровнего списка

Первый способ основывается на создание «умной» таблицы, заголовок которой содержит значения первого выпадающего списка (группы), а строки таблицы соответствуют значениям второго выпадающего списка (подгруппы). Значения элементов подгруппы должны располагаться в соответствующем столбце группы, как на рисунке ниже.

Теперь приступим к созданию первого выпадающего списка группы (в моем случае — список стран):

  1. Выберите ячейку, в которую будете вставлять выпадающий список;
  2. Переходим на вкладку ленты Данные;
  3. Выбираем команду Проверка данных;
  4. В выпадающем списке выбираем значение Список;
  5. В поле Источник указываем следующую формулу =ДВССЫЛ(«Таблица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 — так как это ширина нашего столбца с подгруппами.

Связанный список в MS EXCEL

Создадим выпадающий список, содержимое которого зависит от значений другой ячейки.

Обычный Выпадающий (раскрывающийся) список отображает только один перечень элементов. Связанный список – это такой выпадающий список, который может отображать разные перечни элементов, в зависимости от значения другой ячейки.
Потребность в создании связанных списков (другие названия: связанные диапазоны, динамические списки) появляется при моделировании иерархических структур данных. Например:

  • ОтделСотрудники отдела. При выборе отдела из списка всех отделов компании, динамически формируется список, содержащий перечень фамилий всех сотрудников этого отдела (двухуровневая иерархия);
  • Город – Улица – Номер дома. При заполнении адреса проживания можно из списка выбрать город, затем из списка всех улиц этого города – улицу, затем, из списка всех домов на этой улице – номер дома (трехуровневая иерархия).

В этой статье рассмотрен только двухуровневый связанный список. Многоуровневый связанный список рассмотрен в одноименной статье Многоуровневый связанный список.
Создание иерархических структур данных позволяет избежать неудобств выпадающих списков связанных со слишком большим количеством элементов.
Связанный список можно реализовать в EXCEL, с помощью инструмента Проверка данных ( Данные/ Работа с данными/ Проверка данных ) с условием проверки Список (пример создания приведен в данной статье) или с помощью элемента управления формы Список (см. статью Связанный список на основе элемента управления формы).

Создание Связанного списка на основе Проверки данных рассмотрим на конкретном примере.

Задача: Имеется перечень Регионов, состоящий из названий четырех регионов. Для каждого Региона имеется свой перечень Стран. Пользователь должен иметь возможность, выбрав определенный Регион, в соседней ячейке выбрать из Выпадающего списка нужную ему Страну из этого Региона.

Таблицу, в которую будут заноситься данные с помощью Связанного списка, разместим на листе Таблица. См. файл примера Связанный_список.xlsx

Список регионов и перечни стран разместим на листе Списки.

Обратите внимание, что названия регионов (диапазон А2:А5 на листе Списки) в точности должны совпадать с заголовками столбцов, содержащих названия соответствующих стран (В1:Е1).

Присвоим имена диапазонам, содержащим Регионы и Страны (т.е. создадим Именованные диапазоны). Быстрее всего это сделать так:

  • выделитьячейки А1:Е6 на листе Списки(т.е. диапазон, охватывающий все ячейки с названиями Регионов и Стран);
  • нажать кнопку «Создать из выделенного фрагмента» (пункт меню Формулы/ Определенные имена/ Создать из выделенного фрагмента );
  • Убедиться, что стоит только галочка «В строке выше»;
  • Нажать ОК.

Проверить правильность имени можно через Диспетчер Имен ( Формулы/ Определенные имена/ Диспетчер имен ). Должно быть создано 5 имен.

Можно подкорректировать диапазон у имени Регионы (вместо =списки!$A$2:$A$6 установить =списки!$A$2:$A$5 , чтобы не отображалась последняя пустая строка)

На листе Таблица, для ячеек A5:A22 сформируем выпадающий список для выбора Региона.

  • выделяем ячейки A5:A22;
  • вызываем инструмент Проверка данных;
  • устанавливаем тип данных – Список;
  • в поле Источник вводим: =Регионы

Теперь сформируем выпадающий список для столбца Страна (это как раз и будет желанный Связанный список).

  • выделяем ячейки B5:B22;
  • вызываем инструмент Проверка данных;
  • устанавливаем тип данных – Список;
  • в поле Источник вводим: =ДВССЫЛ(A5)

Важно, чтобы при создании правила Проверки данных активной ячейкой была B5, т.к. мы используем относительную адресацию.

Тестируем. Выбираем с помощью выпадающего списка в ячейке A5 РегионАмерика, вызываем связанный список в ячейке B5 и балдеем – появился список стран для Региона Америка: США, Мексика

Теперь заполняем следующую строку. Выбираем в ячейке A6 РегионАзия, вызываем связанный список в ячейке B6 и опять балдеем: Китай, Индия

Необходимо помнить, что в именах нельзя использовать символ пробела. Поэтому, при создании имен, вышеуказанным способом, он будет автоматически заменен на нижнее подчеркивание «_». Например, если вместо Америка (ячейка В1) ввести «Северная Америка» (соответственно подкорректировав ячейку А2), то после нажатия кнопки Создать из выделенного фрагмента будет создано имя «Северная_Америка». В этом случае формула =ДВССЫЛ(A5) работать не будет, т.к. при выборе региона «Северная Америка» функция ДВССЫЛ() не найдет соответствующего имени. Поэтому формулу можно подкорректировать, чтобы она работала при наличии пробелов в названиях Регионов: =ДВССЫЛ(ПОДСТАВИТЬ(A5;» «;»_»)) .

Теперь о недостатках.
При создании имен с помощью кнопки меню Создать из выделенного фрагмента, все именованные диапазоны для перечней Стран были созданы одинаковой длины (равной максимальной длине списка для региона Европа (5 значений)). Это привело к тому, что связанные списки для других регионов содержали пустые строки.

Конечно, можно вручную откорректировать диапазоны или даже вместо Именованных диапазонов создать Динамические диапазоны. Но, при большом количестве имен делать это будет достаточно трудоемко.
Кроме того, при добавлении новых Регионов придется вручную создавать именованные диапазоны для их Стран.

Чтобы не создавать десятки имен, нужно изменить сам подход при построении Связанного списка. Рассмотрим этот подход в другой статье: Расширяемый Связанный список.

Как сделать зависимые выпадающие списки в ячейках Excel

Зависимый выпадающий список позволяет сделать трюк, который очень часто хвалят пользователи шаблонов Excel. Трюк, который делает работу проще и быстрее. Трюк, благодаря которому ваши формы будут удобны и приятны.

Пример создания зависимого выпадающего списка в ячейке Excel

Пример использования зависимого выпадающего списка для создания удобной формы заполнения документов, с помощью которых продавцы заказывали товары. Из всего ассортимента они должны были выбрать те продукты, которые они собирались продать.

Каждый продавец сначала определял товарную группу, а затем конкретный товар из этой группы. Форма должна включать полное имя группы и определенный индекс товара. Поскольку набирать это вручную было бы слишком трудоемким (и раздражающим) занятием, я предложил очень быстрое и простое решение — 2 зависимых выпадающих списка.

Первым был список всех категорий продуктов, второй — список всех продуктов, находящихся в выбранной категории. Поэтому я создал выпадающий список, зависимый от выбора, сделанного в предыдущем списке (здесь вы найдете материал о том, как создать два зависимых раскрывающихся списка).

Тот же самый результат хочет получить пользователь шаблона домашнего бюджета где нужна категория и подкатегория расходов. Пример данных находится на рисунке ниже:

Так, например, если мы выберем категорию Развлечения, то в списке подкатегорий должно быть: Кинотеатр, Театр, Бассейн. Очень быстрое решение, если в своем домашнем бюджете вы хотите проанализировать более подробную информацию.

Список категорий и подкатегорий в зависимом выпадающем списке Excel

Признаюсь, что в предложенном мной варианте домашнего бюджета я ограничиваюсь только категорией, поскольку для меня такого разделения расходов вполне достаточно (название расходов / доходов рассматривается как подкатегория). Однако, если вам нужно разделить их на подкатегории, то метод, который я описываю ниже, будет идеальным. Смело используйте!

А конечный результат выглядит следующим образом:

Зависимый выпадающий список подкатегорий

Для того чтобы этого достичь, необходимо сделать немного другую таблицу данных, чем если бы мы создавали один раскрывающийся список. Таблица должна выглядеть так (диапазон G2:H15):

Рабочая исходная таблица Excel

В эту таблицу необходимо ввести категорию и рядом с ней ее подкатегории. Имя категории должно повторяться столько раз, сколько есть подкатегорий. Очень важно, чтобы данные были отсортированы по столбцу Категория. Это будет чрезвычайно важно, когда позже будем писать формулу.

Можно было бы также использовать таблицы с первого изображения. Разумеется, формулы были бы разными. Однажды даже я нашел в сети такое решение, но оно мне не понравилось, потому что там была фиксированная длина списка: а значит, иногда список содержал пустые поля, а иногда и не отображал все элементы. Конечно, я могу избежать этого ограничения, но признаюсь, что мне больше нравится мое решение, поэтому к тому решению я больше не возвращался.

Ну хорошо. Теперь, по очереди я опишу шаги создания зависимого выпадающего списка.

1. Имена диапазонов ячеек

Это необязательный шаг, без него мы сможем без проблем справиться с этим. Однако мне нравится использовать имена, потому что они значительно облегчают как написание, так и чтение формулы.

Присвоим имена двум диапазонам. Список всех категорий и рабочий список категорий. Это будут диапазоны A3:A5 (список категорий в зеленой таблице на первом изображении) и G3:G15 (список повторяющихся категорий в фиолетовой рабочей таблице).

Для того чтобы назвать список категорий:

  1. Выберите диапазон A3:A5.
  2. В поле имени (поле слева от строки формулы) введите название «Категория».
  3. Подтвердите с помощью клавиши Enter.

Такое же действие совершите для диапазона рабочего списка категорий G3:G15, который вы можете вызвать «Рабочий_Список». Этот диапазон мы будем использовать в формуле.

2. Создание раскрывающегося списка для категории

Это будет просто:

  1. Выберите ячейку, в которую вы хотите поместить список. В моем случае это A12.
  2. В меню «ДАННЫЕ» выберите инструмент «Проверка данных». Появится окно «Проверка вводимых значений».
  3. В качестве типа данных выберите «Список».
  4. В качестве источника введите: =Категория (рисунок ниже).
  5. Подтвердите с помощью OK.

Проверка вводимых значений – Категория.

Раскрывающийся список для категории.

3. Создание зависимого выпадающего списка для подкатегории

Сейчас будет весело. Создавать списки мы умеем — только что это сделали для категории. Только единственный вопрос: «Как сказать Excelю выбрать только те значения, которые предназначены для конкретной категории?» Как вы, наверное, догадываетесь, я буду использовать здесь рабочую таблицу и, конечно же, формулы.

Начнем с того, что мы уже умеем, то есть с создания раскрывающегося списка в ячейке B12. Поэтому выберите эту ячейку и нажмите «Данные» / «Проверка данных», а в качестве типа данных — «Список».

В источник списка введите следующую формулу:

Вид окна «Проверка вводимых значений»:

Проверка вводимых значений для подкатегории в зависимом выпадающем списке

Как видите, весь трюк зависимого списка состоит в использовании функции СМЕЩ. Ну хорошо, почти весь. Помогают ей функции ПОИСКПОЗ и СЧЕТЕСЛИ. Функция СМЕЩ позволяет динамически определять диапазоны. Вначале мы определяем ячейку, от которой должен начинаться сдвиг диапазона, а в последующих аргументах определяем его размеры.

В нашем примере диапазон будет перемещаться по столбцу Подкатегория в рабочей таблице (G2:H15). Перемещение начнем от ячейки H2, которая также является первым аргументом нашей функции. В формуле ячейку H2 записали как абсолютную ссылку, потому что предполагаю, что мы будем использовать раскрывающийся список во многих ячейках.

Поскольку рабочая таблица отсортирована по Категории, то диапазон, который должен быть источником для раскрывающегося списка, будет начинаться там, где впервые встречается выбранная категория. Например, для категории Питание мы хотим отобразить диапазон H6:H11, для Транспорта — диапазон H12: H15 и т. д. Обратите внимание, что все время мы перемещаемся по столбцу H, а единственное, что изменяется, это начало диапазона и его высота (то есть количество элементов в списке).

Начало диапазона будет перемещено относительно ячейки H2 на такое количество ячеек вниз (по числу), сколько составляет номер позиции первой встречающейся категории в столбце Категория. Проще будет понять на примере: диапазон для категории Питание перемещен на 4 ячейки вниз относительно ячейки H2 (начинается с 4 ячейки от H2). В 4-ой ячейке столбца Подкатегория (не включая заголовок, так как речь идет о диапазоне с именем Рабочий_Список), есть слово Питание (его первое появление). Мы используем этот факт собственно для определения начала диапазона. Послужит нам для этого функция ПОИСКПОЗ (введенная в качестве второго аргумента функции СМЕЩ):

Высоту диапазона определяет функция СЧЕТЕСЛИ. Она считает все встречающиеся повторения в категории, то есть слово Питание. Сколько раз встречается это слово, сколько и будет позиций в нашем диапазоне. Количество позиций в диапазоне — это его высота. Вот функция:

Конечно же, обе функции уже включены в функцию СМЕЩ, которая описана выше. Кроме того, обратите внимание, что как в функции ПОИСКПОЗ, так и в СЧЕТЕСЛИ, есть ссылка на диапазон названный Рабочий_Список. Как я уже упоминал ранее, не обязательно использовать имена диапазонов, можно просто ввести $H3: $H15. Однако использование имен диапазонов в формуле делает ее проще и легко читаемой.

Одна формула, ну не такая уж и простая, но облегчающая работу и защищает от ошибок при вводе данных!

Два варианта использования этого трюка я уже представил. Интересно, как вы его будете использовать?

Связанные выпадающие списки

Связанные выпадающие списки.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)
На что обратить внимание: лучше всегда перед именем книги и после имени листа ставить апостроф — ‘. Так вы избежите проблем и недопонимания, если имя листа или книги содержит пробелы и иные специфические символы. В отличии от списков внутри одной книги в данном случае знак доллара должен быть и перед буквой и перед цифрой. В ином случае возможны ошибки (если, конечно, это не было сделано специально с пониманием того, что делалось).

Ограничения : данный способ создания списков хорош, но не обошлось и без ложки дегтя. Даже двух:

  1. обе книги должны быть открыты. Если вы закроете книгу со списками, то получите ошибку — выпадающие списки просто перестанут работать
  2. созданные подобным образом связанные списки не будут работать с динамическими именованными диапазонами

И ничего с этими ограничениями не поделать при подобном подходе.

Tips_Lists_Connect_Validation.xls (26,5 KiB, 16 309 скачиваний)

Статья помогла? Поделись ссылкой с друзьями!

Поиск по меткам

Здравствуйте!
В связанных списках для заголовков одной таблицы использую ДВССЫЛ таким образом =ДВССЫЛ(«Таблица[#Заголовки]»), дабы при добавлении нового столбца или изменении заголовков в динамической таблице автоматом отображались данные изменения и добавления.
Но в некоторых случаях происходит некое зависание, данный список не раскрывается, он будто не видит данных которые необходимо отобразить.
Подскажите в чем может быть причина?

Поделитесь своим мнением

Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме — добро пожаловать на Форум

Понравилась статья? Поделить с друзьями:
  • Разные рамки для word
  • Разные проценты для excel
  • Разные поля на разных страницах excel
  • Разные области в excel на один лист
  • Разные масштабы оси в excel