Программное обеспечение

Есть в Excel подстановка? Можно сделать в ячейке Excel выбор значений из раскрывающегося списка, как в Access? Как?

Владимир Soldatko
Владимир Soldatko
1 310
Создание выпадающих списков в Excel
http://www.excelworld.ru/publ/hacks/dropdown_list/validation_list/64-1-0-34
Дмитрий Вотчель
Дмитрий Вотчель
27 337
Лучший ответ
Выделите ячейки с данными, которые должны попасть в выпадающий список (например, наименованиями товаров) .
Если у вас Excel 2003 или старше - выберите в меню Вставка - Имя - Присвоить (Insert - Name - Define), если Excel 2007 или новее - откройте вкладку Формулы (Formulas) и воспользуйтесь кнопкой Диспетчер имен (Name Manager), затем Создать. Введите имя (можно любое, но обязательно без пробелов и начать с буквы! ) для выделенного диапазона (например Товары) . Нажмите ОК.
Выделите ячейки (можно сразу несколько) , в которых хотите получить выпадающий список и выберите в меню (на вкладке) Данные - Проверка (Data - Validation). Из выпадающего списка Тип данных (Allow) выберите вариант Список (List) и введите в строчку Источник (Source) знак равенства и имя диапазона (т. е. =Товары) .

Выпадающий список с добавлением новых элементов

Шаг 1. Создаем именованный диапазон

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

в Excel 2007 и новее - жмем на вкладке Формулы (Formulas) кнопку Диспетчер имен (Name Manager) и затем Создать (New)
в Excel 2003 идем в меню Вставка - Имя - Присвоить (Insert - Name - Define)

Затем вводим имя диапазона (допустим People) и в строку Ссылка (Reference) вводим следующую формулу:

=СМЕЩ (Лист1!$A$1;0;0;СЧЁТЗ (Лист1!$A$1:$A$24);1)

в английской версии Excel это будет:

=OFFSET(Лист1!$A$1,0,0,COUNTA(Лист1!$A$1:$A$24),1)

Эта формула ссылается на все заполненные ячейки в столбце А, начиная с А1 и вниз до конца - до последнего имени.
Шаг 2. Создаем выпадающий список в ячейке

Выделяем ячейку D2 и

в Excel 2007 и новее - жмем на вкладке Данные (Data) кнопку Проверка данных (Data Validation)
в Excel 2003 и старше - выбираем в меню Данные - Проверка (Data - Validation).

Далее выбираем из выпадающего списка Тип данных (Allow) позицию Список (List) и вводим в строку Источник (Source) ссылку на созданный на шаге 1 именованный диапазон (не забудьте перед именем диапазона поставить знак равенства!) :
Чтобы Excel позволил нам в будущем ввести в список и новые имена, снимем галочки на вкладках Сообщение для ввода (Input Message) и Сообщение об ошибке (Error Alert) и нажмем ОК. Теперь у нас есть выпадающий список в ячейке D2. Причем, если, например, вручную дописать новое имя в столбце А, то оно автоматически появится в выпадающем списке в ячейке D2, поскольку имена берутся из динамического диапазона People, который автоматически отслеживает изменения в столбце А.
Шаг 3. Добавляем простой макрос

Щелкаем правой кнопкой мыши по ярлычку нашего листа и выбираем Исходный текст (View Source). Откроется модуль листа в редакторе Visual Basic, куда надо скопировать такой код:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim lReply As Long

If Target.Cells.Count > 1 Then Exit Sub
If Target.Address = "$D$2" Then
If IsEmpty(Target) Then Exit Sub
If WorksheetFunction.CountIf(Range("People"), Target) = 0 Then
lReply = MsgBox("Добавить введенное имя " & _
Target & " в выпадающий список? ", vbYesNo + vbQuestion)
If lReply = vbYes Then
Range("People").Cells(Range("People").Rows.Count + 1, 1) = Target
End If
End If
End If
End Sub

Если Ваш выпадающий список находится не в ячейке D2 или Вы назвали диапазон с именами не People, а как-то еще, то подправьте эти параметры в макросе на свои.
Про VBA слышал?
Пётр Голубев
Пётр Голубев
37 749
Владимир Soldatko Код какой-то писать надо? Куда, какой?
Женя Бушуев Не нужно никакого кода. Пользуйтесь проверкой данных: [ссылка заблокирована по решению администрации проекта]
вот видеоинструкция про выпадающие списки в экселе: youtu.be/pzwUjnaTTnA
Есть несколько вариантов списков:
обычный через проверку данных - http://ruexcel.ru/spisok/
зависимый список конфигурируемый в зависимости от значения другой ячейки -
http://ruexcel.ru/zavisimost/