Выпадающий список в ячейке листа

Видео

 У кого мало времени и нужно быстро ухватить суть - смотрим обучающее видео:

Кому интересны подробности и нюансы всех описанных способов - дальше по тексту.

Способ 1. Примитивный

Один щелчок правой кнопкой мыши по пустой ячейке под столбцом с данными, команда контекстного меню Выбрать из раскрывающегося списка (Choose from drop-down list) или нажать сочетание клавиш ALT+стрелка вниз. Способ не работает, если ячейку и столбец с данными отделяет хотя бы одна пустая строка или вам нужен товар, который еще ни разу не вводился выше:

dropdown1.gif

Способ 2. Стандартный

  1. Выделите ячейки с данными, которые должны попасть в выпадающий список (например, наименованиями товаров).
  2. Если у вас Excel 2003 или старше - выберите в меню Вставка - Имя - Присвоить (Insert - Name - Define), если Excel 2007 или новее - откройте вкладку Формулы (Formulas) и воспользуйтесь кнопкой Диспетчер имен (Name Manager), затем Создать. Введите имя (можно любое, но обязательно без пробелов и начать с буквы!) для выделенного диапазона (например Товары). Нажмите ОК.
  3. Выделите ячейки (можно сразу несколько), в которых хотите получить выпадающий список и выберите в меню (на вкладке) Данные - Проверка (Data - Validation). Из выпадающего списка Тип данных (Allow) выберите вариант Список (List) и введите в строчку Источник (Source) знак равенства и имя диапазона (т.е. =Товары).

dropdown2.gif

Нажмите ОК.

Все! Наслаждайтесь!

dropdown3.gif

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

Способ 3. Элемент управления

Этот способ представляет собой вставку на лист нового объекта - элемента управления "поле со списком" с последующей привязкой его к диапазонам на листе. Для этого:

  1. В Excel 2007/2010 откройте вкладку Разработчик (Developer). В более ранних версиях - панель инструментов Формы (Forms) через меню Вид - Панели инструментов - Формы (View - Toolbars - Forms). Если этой вкладки не видно, то нажмите кнопку Офис - Параметры Excel - флажок Отображать вкладку Разработчик на ленте (Office Button - Excel Options - Show Developer Tab in the Ribbon)
  2. Найдите значок выпадающего списка среди элементов управления форм (не ActiveX!). Ориентируйтесь по всплывающим подсказкам - Поле со списком:
    dropdown4.gif
    Щелкните по значку и нарисуйте небольшой горизонтальный прямоугольник - будущий список.
  3. Щелкните по нарисованному списку правой кнопкой мыши и выберите команду Формат объекта (Format control). В появившемся диалоговом окне задайте
    • Формировать список по диапазону - выделите ячейки с наименованиями товаров, которые должны попасть в список
    • Связь с ячейкой - укажите ячейку куда нужно выводить порядковый номер выбранного пользователем элемента.
    • Количество строк списка - сколько строк показывать в выпадающем списке. По умолчанию - 8, но можно больше, чего не позволяет предыдущий способ.

После нажатия на ОК списком можно пользоваться.

Чтобы вместо порядкового номера элемента выводилось его название можно дополнительно использовать функцию ИНДЕКС (INDEX), которая умеет выводить содержимое нужной по счету ячейки из диапазона:

dropdown6.gif

Способ 4. Элемент ActiveX

Этот способ частично напоминает предыдущий. Основное отличие в том, что на лист добавляется не элемент управления, а элемент ActiveX "Поле со списком" из раскрывающегося набора под кнопкой Вставить (Insert) с вкладки Разработчик (Developer):

dropdown7.gif

Механизм добавления тот же - выбираем объект из списка и рисуем его на листе. А вот дальше начинаются серьезные отличия от предыдущего способа.

Во-первых, созданный выпадающий ActiveX список может находится в двух принципиально разных состояниях - режиме отладки, когда можно настраивать его параметры и свойства, двигать его по листу и менять размеры и - режиме ввода, когда единственное, что можно - выбирать из него данные. Переключение между этими режимами происходит с помощью кнопки Режим Конструктора (Design Mode) на вкладке Разработчик (Developer):

dropdown8.gif

Если эта кнопка нажата, то мы можем настраивать параметры выпадающего списка, нажав соседнюю кнопку Свойства (Properties), которая откроет окно со списком всех возможных настроек для выделенного объекта:

dropdown9.gif

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

  • ListFillRange - диапазон ячеек, откуда берутся данные для списка. Выделить мышью диапазон он не даст, надо просто вписать его руками с клавиатуры (например, Лист2!A1:A5)
  • LinkedCell - связанная ячейка, куда будет выводиться выбранный из списка элемент
  • ListRows - количество отображаемых строк
  • Font - шрифт, размер, начертание (курсив, подчеркивание и т.д. кроме цвета)
  • ForeColor и BackColor - цвет текста и фона, соответственно

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

При использовании этого способа, также возможно указывать в качестве ListFillRange не только одномерные диапазоны. Можно, например задать диапазон из двух столбцов и нескольких строк, указав дополнительно, что выводить нужно два столбца (свойство ColumnCount=2). Тогда можно получить весьма привлекательные результаты, окупающие все потраченные на дополнительные настройки усилия:

dropdown10.gif

 

Итоговая сравнительная таблица всех способов

  Способ 1. Примитивный Способ 2. Стандартный Способ 3. Элемент управления Способ 4. Элемент ActiveX
Сложность низкая средняя высокая высокая
Возможность настройки шрифта, цвета и т.д. нет нет нет да
Количество отображаемых строк всегда 8 всегда 8 любое любое
Быстрый поиск элемента по первым буквам нет нет нет да
Необходимость использования дополнительной функции ИНДЕКС нет нет да нет
Возможность создания связанных выпадающих списков нет да нет нет

Ссылки по теме:


Страницы: 1  2  3  4  5  
DD
22.10.2013 13:23:42
  Здравствуйте!
Николай, подскажите пожалуйста, можно ли привязать к выпадающему списку ( месяца года) таблицу с ее формой и ее же  уникальными данными?Объясню почему форма важна, т.к. в году существуют как 5 недельные месяцы так и 6 недельные, и соответственно данные, содержащие уникальные данные по каждому из дней месяца.
09.11.2013 09:16:06
В смысле, чтобы при выборе месяца из списка рядом отображалась таблица с данными за этот месяц (независимо от количества дней)? Почему нет? Возможно все :)

Только без конкретного примера ничего определенного сказать не смогу. Лучше создайте тему на форуме, объясните ситуацию, приложите свой файл и вежливо попросите помощи-совета. А мы обязательно поможем ;)
06.11.2013 14:30:36
Обbясните, что делаю не так?
Сделал список, сохранил на сервере. откріл с другого компа. там такой же офис - списка нету =(
как так?
09.11.2013 09:11:43
Не видя файла сказать сложно. Каким способом делали? Какой версии Office? Что значит "сохранил на сервере" в вашем понимании (сетевой диск, облако)?
12.11.2013 18:40:28
сервер офиса. Офис 2010. попробую вечером залить файл на какой-то хостинг
08.11.2013 21:11:36
Доброго дня суток.
Подскажите, возможно ли соединить работу выпадающего списка с автофильтром. Т.е. при выборе строки из выпадающего списка включается автофильтр с тем же значением что и в выпадающем списке в определенном столбце таблицы.
Спасибо!
09.11.2013 09:08:29
Можно, но нужно писать макрос для такого. Посмотрите вот этот пример- очень похож.
09.11.2013 13:18:35
Огромное спасибо. Очень помогло.
09.11.2013 14:00:34
Доброго дня суток.
Рано я начал радоваться, что все работает.
Я соединил Ваш "Способ 4. Элемент ActiveX" с "Суперфильтр на VBA".
"Элемент ActiveX" работает четко, а "Суперфильтр на VBA" начинает работать только после того как активизирую ячейку куда подставляется переменная элементом ActiveX. Т.е. после того как курсор поставлен в саму ячейку и нажата клавиша Enter. Как быть?
Заранее СПАСИБО.
18.11.2013 22:43:19
Добрый день.
Все сделал по инструкции, получилось. Для слов выпадающих из списка создал отдельный лист, далее скрыл его и поставил пароль.
Теперь закидываю его в дропбокс. Коллеги копируют файл с дропбокса, все открывается, но выпадающий список не появляется.
Пробовал через флешку передавать, по электронке и все равно нет списка.
Подскажите, пожалуйста, что делать???
заранее благодарю
23.11.2013 17:53:25
Очень много полезного в статье. Но пожалуйста залейте ПРИМЕР (по ссылке нет примера), не очень понятно как сделать выпадающий список на 2 столбца.
08.01.2014 18:31:28
Добрый вечер!
При использовании способа "Стандартный"
Не работает "проверка вводимых значений" т.е. помимо указанного списка, можно ввести любое слово.
Как можно это исправить???
Спасибо!
29.01.2014 06:48:24
Спасибо огромное! Так просто!! Я так долго искала такой исчерпывающий ответ. Не понять - невозможно!
30.01.2014 13:46:27
А как создать списки со значениями разных цветов?
30.01.2014 17:00:53
Возникла сложность. Необходимо в выпадающий список ActivX вставить даты в формате ДД.ММ.ГГГГ на выходе получаю числовое значение даты, что делать?
31.01.2014 21:37:20
Можно ли при использовании функции проверка применять список, состоящий из уникальных значений? То есть, если я сошлюсь на некоторый диапазон, например A1:A100, в котором будут периодически попадаться одинаковые записи, они все попадут в выпадающий список. Как сделать, чтобы они не повторялись? И есть ли возможность упорядочить их в алфавитном порядке? В общем, нужно создать список, похожий на тот, что получается при использовании автофильтра.
MEP
01.02.2014 16:28:49
Вопрос такой. в случае создания списка СomboBox например с месяцами. каким образом надо прописать формулу в Экселе на выбранный месяц ComboBoxom?
03.02.2014 14:30:25
А можно ли в выпадающем списке сделать так, чтобы, к примеру, 20 объектов было выделено одним цветом, 11 другим и так далее для более наглядной выборки, а в самой ячейке выбора текст был в обычном формате?
03.02.2014 14:40:09
Написал, наверное, непонятно. Нужен разноцветный выбор, который после выбора нужной информации становился стандартным.:D
07.03.2014 16:35:15
Всем доброго дня! Дам поздравляю с наступающим праздником! Вопрос: сейчас настраивал коллеге выпадющий список - сама база под список находится на другом листе этой же рабочей книги. Так вот, при перегрузке файла список исчезает! Я проверил, на других файлах работает нормально, проверил с этим же, поместив базу под список на тот же рабочий лист где располагается и сам список, тоже работает. В чем может быть проблема?  Файл изначально был с общим доступом ( для настройки списка общий доступ пришлось отключать). Но после настройки списка, включай/не включай общий доступ, проблема не решается. Спасибо заранее!
08.03.2014 11:14:19
Добрый день. Подскажите пожалуйста можно ли изменить шрифт в выпадающем списке сделанном по 2 способу. За сайт и форум огромное СПАСИБО.
10.03.2014 10:58:14
Нашел может кому пригодится
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo l
With ActiveWindow
 If Target.Validation.Type = 3 Then
  .Zoom = 100: Exit Sub
l: .Zoom = 60
End If: End With: End Sub

Вот такой код нужно прописать и все будет работать.
Спасибо за сайт.
11.03.2014 14:47:53
Добрый день! Нужна помощь
В Ехсеl 2010 после некоторых манипуляций пропали кнопки выпадающих (раскрывающихся) списков. Поиском пока ничего не нашел. Как это исправить?
29.03.2014 00:18:32
Статья классная, как и сам сайт. Благодаря знаниям от сюда и советам форумчан экономлю около 3-4 часов ежедневно. Да и жизнь поинтереснее стала.
Мои "пять копеек" к статье...
В конце в сравнительной таблице указано, что в 4-м способе НЕльзя сделать связанные списки. Но ведь можно!
Мне подсказали в это теме, начиная с третьего поста:
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=55963&MID=466662&result=new#message466662


Огромная благодарность автору и форумчанам!!!
07.04.2014 21:31:22
возможно ли в 3 или 4 способе использовать ДВССЫЛ на диапазон? Пока никак не получается, во втором способе получается , но не подходит так как до 300 элементов выпадает?
09.04.2014 14:56:28
День добрый,
при использовании способа №3 "поле Элемента управления" возникает проблема: при переключении между листами в книге Excel пишет ошибку "недостаточно системных ресурсов для полного вывода на экран".
Это происходит тогда, когда кнопка "поле" обращается к списку, расположенному на другой странице (если расположить список (и связь) на этой странице - все норм).
16.04.2014 12:39:18
Здравствуйте. если каждая из ячеек диапазона "товары" имеет ссылку на ячейку другого листа этой же книги (т.е. H3 на ячейку A1 Листа2. H4 на ячейку A1 Листа3 и т.д. по сути переход на лист, где можно. например. описать этот товар). Как сделать в выбранном из списка товаре переход по этой ссылке? Выбрать из списка и попасть на нужный лист?
18.04.2014 09:53:17
Когда исходные значения, которые появляются в раскрывающемся списке, находятся в одном столбце все варианты работают.
Но, когда исходные значения располагаются в одной строке (разных столбцах), то 3-й и 4-й способы НЕ РАБОТАЮТ.
Как сделать, чтобы они работали?
18.04.2014 16:30:50
Решил через макрос. Думал есть решение попроще.
Sub List_ini()
Dim Max As Integer
Dim Data() As String

Max = Range([A2], [A2].End(xlToRight)).Count
ReDim Data(Max) As String

For i = 0 To Max
Data(i) = Range("A2";).Cells(1, 1 + i)
Next

ComboBox1.List = Data()

End Sub
v.plagov
19.04.2014 17:14:10
Подскажите, пожалуйста. Можно ли первый способ подкорректировать (макросом, наверно?) таким образом, чтобы в выпадающем списке отображалось больше 8 строк? Третий и четвертый способы мне не подходят, т.к. применить нужно на всю колонку, а не на отдельные ячейки.

Подскажите, в каком направлении копать?
19.04.2014 20:50:07
Ни в каком - в первом способе больше 8 строк отобразить невозможно. Копайте в сторону других способов :)
24.04.2014 12:47:43
Здравствуйте! Подскажите можно ли в окне "Проверка вводимых данных" в поле "Источник" сослатся на поле именованной таблицы, Напр. Таблица: Mng - Manager, Поле: name_mng. Я пітаюсь задать источник =Mng[name_mng] - бросает ошибку.
07.05.2014 12:07:08
Используйте функцию ДВССЫЛ (INDIRECT), чтобы "обмануть" Excel в этом поле, т.е. вместо прямой ссылки =Mng[name_mng] введите =ДВССЫЛ("Mng[name_mng]")
08.05.2014 14:36:13
Спасибо, но я уже обошёл по другому - создал Диапазон, который сослался на поле в таблице, а впыадайку уже настроил на этот диапазон, так тоже работает

У мене еще один вопрос - можно ли сделать динамическим размер Таблицы, базируясь на каком-нибудь правиле, типа как смещение по кол-ву значени
01.05.2014 15:24:16
Здравствуйте, возможно ли сделать выпадающий список с проверкой не заполненных ниже ячеек?
07.05.2014 12:06:00
Страницы: 1  2  3  4  5  
Наверх