484

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

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


1. С помощью функции ДВССЫЛ


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


Итак, начнём. Выделяем весь список «Певец» (с ячейки А2 и вниз до конца списка) и нажав Ctrl+F3 или на вкладке Формулы - Диспетчер имён – Создать задаём имя диапазону (Певец). Затем таким же способом проделаем то же самое с остальными списками «Группа» и «Дата».

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

Теперь создадим первый выпадающий список для выбора певца. Выделяем пустую ячейку и на вкладке «Данные» нажимаем кнопку «Проверка данных». Затем из выпадающего списка «Тип данных» выбираем вариант «Список» и в поле «Источник» выделяем ячейки с названиями (ячейки A1:C1).

После нажатия на ОК первый выпадающий список готов:

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

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

Минусы данного способа:

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

=INDIRECT(SUBSTITUTE(E2;" ";"_"))

- Надо вручную создавать много именованных диапазонов (если у нас много значений).


2. Для следующего способа нам нужна таблица, разбитая по категориям и видам:

Как и в предыдущем способе через Ctrl+F3 создаём именованные диапазоны каждой категории (без заголовков). Т.е. сначала «Мебель», затем «Техника» и так каждую по отдельности.

Теперь создаём первый выпадающий список по категориям. Для этого на вкладке «Данные» - «Проверка данных» - «Тип данных» выбираем «Список» и в поле «Источник» вводим названия диапазонов (Мебель;Техника)

Далее для второго зависимого списка тем же способом для ячейки «Вид» в поле «Источник» вводим формулу =ДВССЫЛ($B$14), а для «Тип» =ДВССЫЛ($B$15). В результате у нас получится следующее:

3. С помощью функций СМЕЩ и ПОИСКПОЗ


Для использования этого способа необходим отсортированный список с отдельным образцом имеющихся значений:

Далее нажимаем Ctrl+F3, где задаём имя диапазону D1:D3 (Товар). Затем на вкладке «Данные» - «Проверка данных» - «Тип данных» - «Список» и в строке «Источник» указываем =Товар или просто выделить ячейки D1:D3 (если они на том же листе, где список).

Чтобы выпадающий список автоматически пополнялся новыми данными из категории «Товар», открыв «Диспетчер имён» в строке диапазон вписываем формулу =СМЕЩ($D$1;0;0;СЧЁТЗ($D$1:$D$400);1) где $D$400 количество ячеек необходимое для образца выпадающего списка.

=OFFSET($D$1;0;0;COUNTA($D$1:$D$400);1)


Для зависимого списка товара создадим именованный диапазон с функцией СМЕЩ, который будет динамически ссылаться только на ячейки товара определенного вида. Для этого нажав Ctrl+F3 создаём новый именованный диапазон с любым именем (например, Вид) и в поле «Диапазон» в нижней части окна вводим следующую формулу:

=СМЕЩ($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 к формуле будут автоматически добавлены имена листов.


Функция СМЕЩ выдаёт ссылку на диапазон нужного размера, сдвинутый относительно исходной ячейки на заданное количество строк и столбцов. Вот так: =СМЕЩ(начальная_ячейка; сдвиг_вниз; сдвиг_вправо; размер_диапазона_в_строках; размер_диапазона_в_столбцах)


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

- начальная ячейка – берём первую ячейку нашего списка, т.е. А1

- сдвиг_вниз – считает функция ПОИСКПОЗ, которая выдаёт порядковый номер ячейки с выбранным товаром (G2) в заданном диапазоне (столбце А)

- сдвиг_вправо = 1, т.к. мы хотим сослаться на Вид в соседнем столбце (В)

- размер_диапазона_в_строках – вычисляем с помощью функции СЧЁТЕСЛИ, которая умеет подсчитать количество встретившихся в списке (столбце А) нужных нам значений – товара (G2)

- размер_диапазона_в_столбцах = 1, т.к. нам нужен один столбец с Видом товара


В итоге у вас должно быть так:

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

MS, Libreoffice & Google docs

761 пост14.9K подписчиков

Правила сообщества

1. Не нарушать правила Пикабу

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

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

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


Важно - сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.

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

5
Автор поста оценил этот комментарий
Очень круто! Спасибо за труд!
P.S. Грейпфрут. Ave Grammar.
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Точно)) не заметил, на автомате написал(

показать ответы
0
Автор поста оценил этот комментарий

добрый человек, можно обратиться за советом?) помогаю другу немного автоматизировать его работу. суть - есть монтаж отопления в частном доме. есть зоны работ - условно котельная/ванная/комната, в каждой зоне - несколько типов работ (монтаж котла/прокладка труб/ теплый пол) каждая из этих работ оплачивается как сумма работ+ сумма материалов.


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

Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий

Поставил + и сохранил. Спасибо!

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо и вам плюс)

0
Автор поста оценил этот комментарий
А можно сделать на базе экселя, что то подобгое шаблона, где в одном месте меняешь данные, а они заменяються в определенной форме.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Не совсем понял, что именно вы имели в виду, но если вам нужно, чтобы содержимое например ячейки А1 отображалось в ячейке А10, то нужно в ячейке А10 поставить знак равно и кликнуть мышкой на ячейку А1, затем Enter. Всё что вы введёте в А1 автоматически выйдет в А10

показать ответы
0
Автор поста оценил этот комментарий
Второй пример с мебелью и техникой, похож на морфологический ящик из метода Цвикки
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Я делал акцент на метод работы выпадающего списка, а содержимое таблицы каждый заполнит сам

0
Автор поста оценил этот комментарий

ТС, огромное спасибо, не подскажете ли, как сделать так, чтобы эксель сам считал в конце списка, сколько раз он использовал то или иное слово в списке?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Попробуйте эту формулу =СЧЁТЕСЛИ(A1:A100;"*слово*")

0
Автор поста оценил этот комментарий

Отправила

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

вы почту правильно написали? мне ничего не пришло

0
Автор поста оценил этот комментарий

Нет, мне нужен процентный показатель  доли плохих (диапазон 0-6), хороших (7 и 8) и отличных (9,10) оценок по людям в разрезе и по группе в целом.  Могу прислать файл на почту, для наглядности. Я кое что там сделала, но чувствую, что коряво и через ж..., а можно быстрее и красивее

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

пришлите мне на почту, мэйл в комментариях есть

показать ответы
0
Автор поста оценил этот комментарий

Помогите, пожалуйста! Имеем список людей (пусть будет 10) , у людей оценки (от 0 до 10), оценок у каждого человека несколько. Нужно выделить долю "отличников" (оценки 9 и 10), долю "хорошистов" ( 7 и 8), долю "троечников" ( оценки от 0 до 6) по каждому  человеку и по группе в целом.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

То есть вам нужно среднее значение оценок людей, например 5; 2; 6 = 4,3 Так?

показать ответы
0
Автор поста оценил этот комментарий

можно вашу электронку?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

veseliy.4el@mail.ru

0
Автор поста оценил этот комментарий

тов. знатоки екселя, скажите пожалуйста как решить такое:

есть список


фыва 1 654 йцук

олдж 1 4656 цуйц

лорем 1 321уцйцу

ипсум 1 4588 йййй


через поиск/замену задать допустим  "(1)( )(\d\d\d)" на  "хх$3"

что б получить


фыва хх654 йцук

олдж хх4656 цуйц

лорем хх321уцйцу

ипсум хх4588 йййй


так то приходится через блокнот++ такое проводить

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Введите в соседнем от первого столбика то, что вам нужно, затем нажмите ctrl+E и будет вам счастье)) Мгновенное заполнение в Excel

0
Автор поста оценил этот комментарий

Вот это спасибо! А как можно к вам за советом обратиться? Почтой или здесь писать?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спрашивайте здесь, чем смогу помогу

показать ответы
Автор поста оценил этот комментарий

Ну а ссылка на пример в облаке где? Чтобы можно было посмотреть, как получилось и понять, надо ли оно?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Смогу завтра, простите за навязчивость)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Нет проблем, чем смогу помогу

показать ответы
0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

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

Можете скриншот приложить?

показать ответы
0
Автор поста оценил этот комментарий

Дружище как с тобой связаться?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спрашивай здесь, я скажу смогу помочь или нет

показать ответы
0
Автор поста оценил этот комментарий

Премного благодарен, буду разбираться. Года 4 назад, когда писал расчетный шаблон, не было возможности, обыскал всё. Пришлось реализовывать через ВПР и руками вписывать данные, по которым потом делалась выборка инфы.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это довольно муторно(( но главное вы выполнили поставленную задачу))

показать ответы
0
Автор поста оценил этот комментарий

Не на другом листе, в другой книге :(

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы