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

Видео

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

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

Способ 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  
Доброго времени суток .не знаю ушло мое предыдущее сообщение или нет , не вижу его.. повторюсь может быть. СПАСИБО ОГРОМНОЕ за разбор все гениально просто, но вот вопрос. Как сделать, что бы при наведении курсора в поле списка текст, что в нем весь выделился и при поиске следующего значения удалялся . и когда по первым буквам искомое значение находится нажимаешь ВВОД или ТАВ  курсор переходит на следующий аналогичный список.Способ 4. Элемент ActiveX. Зарание спасибо
Доброго времени суток. все как в стихотворении ищут пожарные ищет милиция.... но наконец нашел. Огромное спасибо за разбор. Очень помогло. Но вот подскажите, может есть какое параметр свойст. При нведении на список содержимое надо что бы выделялось на удаление и при нажатии клавиши ИНТЕР переходило бы на другой анологичный список или на другую строку,ячейку. Способ 4. Элемент ActiveX
Помогите пожалуйста.
Никак не могу настроить, чтобы в ячейке с выпадающим списком слова переносились по ширине ячейки
с исходным текстом прямо беда у меня.
Прописываю:

Private Sub ComboBox1_Change()
Range(ComboBox1.LinkedCell).WrapText = True
Rows(Range(ComboBox1.LinkedCell).Row).AutoFit
End Sub

выдает ошибку.

Как настроить перенос текста?
11.12.2018 11:31:44
Вот очень давно возник вопрос, а возможно ли создать зависимый список без выбора вариантов значений.

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

п.с. сейчас если значение всего одно, то приходится выбирать между пробелом и единственным значением.
03.03.2019 10:42:42
Спасибо за пример.
Но есть ещё такая ситуация:

Иногда есть 2 столбца. В выпадающем списке в ячейках второго столбца должен выпадать список, зависящий от значений в левой ячейке первого столбца. И количество строк большое и изменяется.
Можно что-то сделать в этом случае?  
07.05.2019 18:17:04
Доброго времени!
При создании и присвоении ячейки типа Раскрывающегося списка и вводом постоянных значений:
Range("L" + CStr(i)).Select
                   With Selection.Validation
                       .Delete
                       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                           xlBetween, Formula1:="List 1;List 2;List3;List4;"
                           
                       .IgnoreBlank = True
                       .InCellDropdown = True
                       .InputTitle = ""
                       .ErrorTitle = ""
                       .InputMessage = ""
                       .ErrorMessage = ""
                       .ShowInput = True
                       .ShowError = True
                   End With
Далее после отработки этого макроса, в списке появляется на выбор только ОДНА сторока "List 1;List 2;List3;List4;"
если я ее пересохраняю средствами EXEL через "проверка данных/список/ввод значений" получается список из 4 строк.
Прошу помощи.
06.09.2019 14:00:39
Николай, спасибо за очень полезные советы. Но всё же хотелось бы как-то соединить достоинства Способа 2 и 4:
1. т.е. по всем выделенным нескольким ячейкам, в которых нужно получить выпадающий список (а не только в одной ячейке, в которой помещён элемент ActiveX)
2. сделать "быстрый поиск элемента по первым буквам",
3. и +"возможность создания связанных выпадающих списков". Помогите, пожалуйста, это реализовать. Я думаю, что этот ещё универсальный Способ 5 будет всем интересен...
14.01.2020 09:42:20
Не получается скачать пример.
19.06.2020 07:16:28
Здравствуйте. Краткий вопрос:
4-ый вариант может ли записывать не жестко заданную ячейку, а, например, в активную ?

P/S/ понимаю, что с помощью VBA можно реализовать, но быть может можно и без ?
18.09.2020 10:03:12
подскажите, можно ли сделать список, по выбору выдающий нужное значение не в одной ячейке а определенные значения нескольких ячеек?? либо это можно реализовать только картинками?
09.01.2021 17:25:23
Выпадающий список с быстрым поиском в нескольких ячейках:
http://planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=136166&MID=1108162
04.03.2021 11:10:30
Спасибо
28.03.2021 02:23:48
Здравствуйте. Есть 2 листа.
На первом - столбцы "товары", "цена", выпадающий список "категория" (и другие)
на втором - столбец "список категорий" (и другие)

если я нашел ошибку в списке категорий на втором листе и исправил её, то на первом листе текст не меняется.
пример - на втором листе в список добавил категорию "категоррия 7"
на первом листе из списка выбрал "категоррия 7" и тут заметил опечатку. если я на втором листе в списке категорий исправлю "категоррия 7" на "категория 7", то на первом листе останется "категоррия 7".

как сделать... даже не знаю как это обозвать. автообновление что ли...
Здравствуйте! Подскажите пожалуйста, есть эксель файл с выпадающим списком, как раскидать этот список по отдельным ячейкам в столбец?
Подскажите, пожалуйста, как сделать список, но из гиперссылок? Когда производишь выборку по списку, хочется делать выбор из гиперссылок на части документа и при выборе, попадать в нужное место. Такое возможно?
11.02.2022 15:03:12
Добрый день, Николай! Ссылка на пример в шапке приводи к открытию этой же страницы, исправьте пожалуйста
06.10.2022 16:56:15
Добрый день.Подскажите как создать выпадающий список из умной таблицы, которая находится на другом листе? не могу в Данных где нужно указать таблицу с данными указать на другой лист.  
21.01.2023 00:16:42
Николай сорри файл не скачивается посмотрите пожалуйста что там не так. спасибо!
29.04.2023 17:58:51
Не подскажете - мне кроме значений выпадающего списка нужно вставить еще номера, и они уникальные и каждый раз меняются. Но когда я пытаюсь вписать номер в ячейку с выпадающим списком, выдает ошибку "this value doesn't match data validation"

Отбой, уже нашел, если кому-то это будет полезно - снял галочки с сообщения для ввода и сообщения об ошибке в проверке данных
добрый день.
почему выпадающий список ActiveX возвращает текст, а не число.
перепробовал уже разные способы преобразовать текст в число, но ничего не помогло
может что-то в свойствах я не включил? Или данный способ не подходит для чисел?
19.06.2023 22:13:53
Пример не скачивается
04.07.2023 09:00:56
Большим и жирным плюсом этого способа является возможность быстрого перехода к нужному элементу в списке при вводе первых букв с клавиатуры(!),
Имеется ввиду авто заполнение наверно? Потому как раскрытие отфильтрованного списка при вводе первых букв просто так не происходит.
11.07.2023 19:17:07
Спасибо!
22.08.2023 13:09:04
Может кто сталкивался, был выпадающий список на английском языке (ячеек много). Источник перевели, в ячейчках с выпадающим списком осталось на ангийском языке, можно ли как то сделать чтоб во всех ячейках обновились знчаения? пока что приходится каждую ячейку тыкать отдельно.
18.12.2023 15:05:10
Николай, Спасибо!

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

Спасибо за Ваш труд!
Страницы: 1  2  3  4  5  
Наверх