Lost your password?


Хитрости »
Основные понятия (27)
Сводные таблицы и анализ данных (10)
Графики и диаграммы (5)
Работа с VB проектом (12)
Power BI и Power Query (23)
Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (68)
Разное (43)
Баги и глюки Excel (5)

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


Скачать файл, используемый в видеоуроке:

  Связанные выпадающие списки.xls (216,5 KiB, 3 227 скачиваний)


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

Так же см.:
Выпадающие списки
Именованные диапазоны
Динамические именованные диапазоны


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

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

Access apple watch Multex Power Query и Power BI VBA управление кодами Бесплатные надстройки Дата и время Записки ИП Надстройки Печать Политика Конфиденциальности Почта Программы Работа с приложениями Разработка приложений Росстат Тренинги и вебинары Финансовые Форматирование Функции Excel акции MulTEx ссылки статистика
Обсуждение: 37 комментариев
  1. FlintFD:

    Нужная функция, вот только столкнулся с граблями (т.е. ограничениями самой программы), есть первоначальный список, в нём имена типа "Имя-1", "Имя-2"... именно средняя черта (минус), соответственно способ не работает, т.к. программа не даёт именовать диапазоны со средней чертой. Установка нижней черты не вариант, именно так и должно выглядеть, потом это передаётся в сводные таблицы, которые печатаются на стол руководству, не поймут... :)

  2. Что мешает записывать ссылку как:
    =ДВССЫЛ(ПОДСТАВИТЬ($A$1;"-";"_")
    В результате сами имена будут отвечать всем требованиям Excel, а отображаться на листе будут так, как Вам хочется их видеть.

  3. FlintFD:

    Спасибо. Как всё просто то... Я решил это немного по другому, топорней чтоли, создал ещё один столбец, в котором как раз сделал ссылку, а соседний столбец имеет вид
    =ЗАМЕНИТЬ([@[Индекс]];4;1;"-")
    Лишний столбец это плохо, буду опять переделывать. Как говорится "я не волшебник, я только учусь". Немного не понимаю логики работы с формулами в программе, работа в GDL даёт своё знать, некоторые вещи в Excel кажутся вывернутыми наизнанку, будем врубаться.

  4. pistulet:

    Подскажите, пожалуйста, по моему вопросу.

    Сделал связанный выпадающий список. Но дело в том что пвесь перечень оборудования перечислить нереально. Первый список- это разделение по категориям оборудования (например, вентиляторы дымоудаления, общепромышленные).
    В первом столбце выбираю вентиляторы дымоудаления, во втором выбираю необходимый вентилятор (отображается полная его маркировка, включая мощность двигателя, и другие параметры.)
    Далее необходимо вручную отредактировать некоторые параметры, но выскакивает ошибка, что введенное значение неверно, и набор значений, которые могут быть введены в ячейку, ограничен.
    Если я правильно понял, то это ограничение накладывается формулой =ДВССЫЛ($A1).

    Как можно избежать ограничение на изменение текста во втором выпадающем списке?

  5. pistulet, читайте аннотацию над полем создания комментария - с подобными проблемами лучше обращаться в форум, т.к. нереально понять Вашу проблему, не видя файла с проблемой.

  6. Рамиль:

    Здравствуйте! Подскажите, пожалуйста, по такому вопросу.
    Имеем вид работ: Работа1, Работа2, Работа3. По каждому виду работ свой перечень исполнителей, например, Начальник1, Инженер1, Мастер1; Начальник2, Инженер2, Мастер2; Начальник3, Инженер3, Мастер3. Таблица исполнителей имеет вид: Ф.И.О., должность и пр.
    Создал связанные списки: в зависимости от вида работ выбирается свой набор исполнителей (выбор делаю по Ф.И.О. - так удобнее). Затем в третью ячейку вставляется должность (раньше все исполнители были в одном списке и через формулу ВПР проблем не составляло). Теперь получается надо в формуле ВПР учесть зависимость таблицы не только от Ф.И.О., но и от вида работ.
    Как это реализовать? Может не через ВПР надо?

  7. Олег:

    Добрый день. Скачал Ваш документ с примером, все работает. Пытаюсь добавить, ниже на одну клетку, еще пару строк с выпадающими списками, с источниками : =Списки и =ДВССЫЛ($A2) соответственно. При сохранении =ДВССЫЛ($A2) выдается ошибка "При вычислении "Источник" возникает ошибка".

  8. Ирина:

    ДВССЫЛ("Лист1!"&$A$1)
    Никак не работает для списка на другом листе. И для книги задавала, бесполезно...

  9. Ирина, вряд ли Вам можно помочь. Вы сообщили лишь, что не работает. А что конкретно? Как заданы списки? Может быть имя является динамическим? Что в ячейке А1?

  10. Ксения:

    Здравствуйте. работаю с екселе со списком, файл Ордер, в котором выходит выпадающий список -который находиться в листе list, немного сложновато все, потому что List связан с еще одним листом "долг" в котором связана и сумма и наименование поставщика вот таким образом"=ЕСЛИ(долг!I5968=0;"";долг!F5968). Незнаю как объяснить, но через пол года работы с этим файлом, только сейчас у меня не полность стал показывать выпадающий список в файле ОРДЕР, а во всех остальных файлах которые связаны с этим списком все показано.Что делать? может где-то стоит галочка ограничение просмотра списка? или еще что-то? Помогите.

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

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


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Тренинги

Заказать
Юридическая информация

Использование материалов сайта

Политика Конфиденциальности

ИП Щербаков Дмитрий Валентинович
ОГРНИП: 318502700083307
ИНН: 504013350772

Наши партнеры

Перейти

Счетчики

Рейтинг@Mail.ru Яндекс.Метрика
© 2024 Excel для всех   Войти