Многие пользователи Excel, как правило, создают раскрывающийся список с несколькими флажками, чтобы выбирать несколько элементов из списка за раз. На самом деле вы не можете создать список с несколькими флажками с проверкой данных. В этом руководстве мы покажем вам два метода создания раскрывающегося списка с несколькими флажками в Excel.
Используйте поле списка для создания раскрывающегося списка с несколькими флажками
A: Создайте список с исходными данными
B: Назовите ячейку, в которой вы будете размещать выбранные элементы
C: вставить форму, чтобы помочь вывести выбранные элементы
Легко создавайте раскрывающийся список с флажками с помощью замечательного инструмента
Дополнительные руководства для раскрывающегося списка …
Используйте поле списка для создания раскрывающегося списка с несколькими флажками
Как показано на скриншоте ниже, на текущем листе все имена в диапазоне A2: A11 будут исходными данными для списка. При нажатии на кнопку в ячейке C4 можно вывести выбранные элементы, и все выбранные элементы в списке будут отображаться в ячейке E4. Для этого сделайте следующее.
A. Создайте список с исходными данными
1. Нажмите Застройщик > Вставить > Список (Active X Control). Смотрите скриншот:
2. Нарисуйте список на текущем листе, щелкните его правой кнопкой мыши и выберите Предложения из контекстного меню.
3. в Предложения диалоговое окно необходимо настроить следующим образом.
- 3.1 В ListFillRange введите диапазон источников, который будет отображаться в списке (здесь я ввожу диапазон A2: A11);
- 3.2 В Стиль списка выберите 1 — вариант стиля fmList;
- 3.3 В Выбор из нескольких вариантов выберите 1 — fmMultiSelectMulti;
- 3.4 Закройте Предложения диалоговое окно. Смотрите скриншот:
B: Назовите ячейку, в которой вы будете размещать выбранные элементы
Если вам нужно вывести все выбранные элементы в указанную ячейку, например E4, сделайте следующее.
1. Выберите ячейку E4, введите ЛистбоксВывод в Имя Box и нажмите Enter .
C. Вставьте форму, чтобы помочь вывести выбранные элементы
1. Нажмите Вставить > Формы > Прямоугольник. Смотрите скриншот:
2. Нарисуйте прямоугольник на листе (здесь я рисую прямоугольник в ячейке C4). Затем щелкните прямоугольник правой кнопкой мыши и выберите Назначить макрос из контекстного меню.
3. в Назначить макрос диалогового окна, нажмите Новинки кнопку.
4. В дебюте Microsoft Visual Basic для приложений окна, замените исходный код в Модули окно с приведенным ниже кодом VBA.
Код VBA: создать список с несколькими флажками
Sub Rectangle1_Click()
'Updated by Extendoffice 20200730
Dim xSelShp As Shape, xSelLst As Variant, I, J As Integer
Dim xV As String
Set xSelShp = ActiveSheet.Shapes(Application.Caller)
Set xLstBox = ActiveSheet.ListBox1
If xLstBox.Visible = False Then
xLstBox.Visible = True
xSelShp.TextFrame2.TextRange.Characters.Text = "Pickup Options"
xStr = ""
xStr = Range("ListBoxOutput").Value
If xStr <> "" Then
xArr = Split(xStr, ";")
For I = xLstBox.ListCount - 1 To 0 Step -1
xV = xLstBox.List(I)
For J = 0 To UBound(xArr)
If xArr(J) = xV Then
xLstBox.Selected(I) = True
Exit For
End If
Next
Next I
End If
Else
xLstBox.Visible = False
xSelShp.TextFrame2.TextRange.Characters.Text = "Select Options"
For I = xLstBox.ListCount - 1 To 0 Step -1
If xLstBox.Selected(I) = True Then
xSelLst = xLstBox.List(I) & ";" & xSelLst
End If
Next I
If xSelLst <> "" Then
Range("ListBoxOutput") = Mid(xSelLst, 1, Len(xSelLst) - 1)
Else
Range("ListBoxOutput") = ""
End If
End If
End Sub
Примечание: В коде Прямоугольник1 имя формы; СписокBox1 это имя списка; Выберите параметры и Варианты получения отображаемые тексты фигуры; и ЛистбоксВывод — имя диапазона выходной ячейки. Вы можете изменить их в зависимости от ваших потребностей.
5. Нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.
6. Нажмите кнопку прямоугольника, чтобы свернуть или развернуть список. Когда поле списка расширяется, отметьте элементы в поле списка, а затем снова щелкните прямоугольник, чтобы вывести все выбранные элементы в ячейку E4. См. Демонстрацию ниже:
7. Затем сохраните книгу как Книга Excel MacroEnable для повторного использования кода в будущем.
Создавайте раскрывающийся список с флажками с помощью замечательного инструмента
Помимо приведенной выше демонстрации, мы также предоставляем пошаговое руководство, чтобы продемонстрировать, как применить эту функцию для решения этой задачи. Пожалуйста, сделайте следующее.
1. Откройте лист, в котором установлен раскрывающийся список проверки данных, щелкните Кутулс > Раскрывающийся список > Раскрывающийся список с флажками > Настройки. Смотрите скриншот:
2. в Раскрывающийся список с флажками Настройки диалоговое окно, настройте следующим образом.
- 2.1). Обращаться к в разделе укажите область применения, в которой вы будете создавать флажки для элементов в раскрывающемся списке. Вы можете указать определенный диапазон, текущий рабочий лист, текущая рабочая тетрадь or все открытые книги в зависимости от потребностей.
- 2.2). режим раздел выберите стиль, в котором вы хотите выводить выбранные элементы;
- Вот берет Изменить в качестве примера, если вы выберете этот вариант, значение ячейки будет изменено в зависимости от выбранных элементов.
- 2.3). Разделитель поле введите разделитель, который вы будете использовать для разделения нескольких элементов;
- 2.4). Направление текста раздел выберите направление текста в зависимости от ваших потребностей;
- 2.5) Нажмите OK кнопку.
3. Последний шаг, нажмите Кутулс > Раскрывающийся список > Раскрывающийся список с флажками > Включить раскрывающийся список флажков чтобы активировать эту функцию.
С этого момента, когда вы щелкаете ячейки с раскрывающимся списком в указанной области, всплывает список, пожалуйста, выберите элементы, установив флажки для вывода в ячейку, как показано в демонстрации ниже (в качестве примера возьмите режим изменения ).
Для получения дополнительных сведений об этой функции, пожалуйста, посетите здесь.
Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Статьи по теме:
Автозаполнение при вводе текста в раскрывающемся списке Excel
Если у вас есть раскрывающийся список проверки данных с большими значениями, вам нужно прокрутить список вниз только для того, чтобы найти нужное, или введите все слово напрямую в поле списка. Если есть способ разрешить автозаполнение при вводе первой буквы в выпадающем списке, все станет проще. В этом руководстве представлен метод решения проблемы.
Создать раскрывающийся список из другой книги в Excel
Создать раскрывающийся список проверки данных среди листов в книге довольно просто. Но если данные списка, необходимые для проверки данных, находятся в другой книге, что вы будете делать? В этом руководстве вы узнаете, как подробно создать раскрывающийся список из другой книги в Excel.
Создайте раскрывающийся список с возможностью поиска в Excel
Для раскрывающегося списка с многочисленными значениями найти подходящий — непростая задача. Ранее мы ввели метод автоматического заполнения раскрывающегося списка при вводе первой буквы в раскрывающемся списке. Помимо функции автозаполнения, вы также можете сделать раскрывающийся список доступным для поиска для повышения эффективности работы при поиске правильных значений в раскрывающемся списке. Чтобы сделать раскрывающийся список доступным для поиска, попробуйте метод, описанный в этом руководстве.
Автоматическое заполнение других ячеек при выборе значений в раскрывающемся списке Excel
Допустим, вы создали раскрывающийся список на основе значений в диапазоне ячеек B8: B14. При выборе любого значения в раскрывающемся списке необходимо, чтобы соответствующие значения в диапазоне ячеек C8: C14 автоматически заполнялись в выбранной ячейке. Для решения проблемы методы, описанные в этом руководстве, окажут вам услугу.
Дополнительные руководства для раскрывающегося списка …
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
iskatel Пользователь Сообщений: 14 |
Добрый вечер! Про анализировав большой объем информации подобного решения не нашел, поэтому обращаюсь к Вам как к профессионалам и прощу помощи! http://www.planetaexcel.ru/techniques/1/181/ Большое спасибо! з.ы. файл исходник прилагаю! Изменено: iskatel — 01.08.2015 00:13:30 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Совсем недавно тема была. |
iskatel Пользователь Сообщений: 14 |
по первому пункту: Изменено: iskatel — 01.08.2015 00:25:10 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Чем второй пункт отличается от первого и где эти пункты? Записать в одну ячейку не проблема. Но в какую? Я про свой файл-пример говорю ) |
iskatel Пользователь Сообщений: 14 |
Юрий, признаться честно, если бы для меня была это не проблема, я бы не обращался за помощью) Изменено: iskatel — 31.07.2015 23:57:18 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Так я и пытаюсь помочь ) Но мне непонятно — про какие пункты Вы говорите — где эти пункты? В какую ячейку должны собираться данные? |
iskatel Пользователь Сообщений: 14 |
т.е. если я поставил курсор на любую ячейку в столбце «С», например «С4» то чтобы вылезло окно с чекбоксами, я выбрал какие нужно категории, и они прописались в эту же ячейку, через запятую (я вроде тут — https://yadi.sk/i/TDTeSOmLiCvGV так и пояснил). Спасибо! Изменено: iskatel — 31.07.2015 23:57:34 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
iskatel, Вы заметили, что я отвечаю Вам без цитирования? Понятно, к кому я обращаюсь и на какие вопросы я отвечаю? А зачем Вы цитируете меня? Исправьте свои сообщения. А я пока набросаю пример. |
iskatel Пользователь Сообщений: 14 |
Юрий М, ок, спасибо! а по поводу цитирования, то привычка форумная) |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
|
iskatel Пользователь Сообщений: 14 |
Все верно, а как чтобы на одном листе выполнялось два таких макроса, т.е. мне в ячейке «С» нужно сделать выбор «Категории» а в ячейке «Е» добавить выбранную строку в чекбоксе (в конце содержимого текущей ячейки) и можно сделать выбор в ячейке «С» без кнопки «Записать», а просто поставил чекбоксы и потом курсор на любую ячейку и он сохраняет Изменено: iskatel — 01.08.2015 00:25:35 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Чтобы список (один и тот же) применялся к двум столбцам, нужно в макросе изменить контролируемый диапазон (правый клик по ярлычку листа — исходный текст). Если выпадающие списки для столбцов разные — нужно рисовать второй ЛистБокс. |
iskatel Пользователь Сообщений: 14 |
Юрий М, Юрий, буду рад вашей помощи завтра! Спасибо! |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Сделайте МАЛЕНЬКИЙ пример на основе моего файла и поясните, откуда брать данные для второго списка. |
iskatel Пользователь Сообщений: 14 |
Юрий М, |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#16 01.08.2015 19:34:07
и создайте тот самый перечень данных. |
||
iskatel Пользователь Сообщений: 14 |
Юрий М, не могу понять смысл создавать еще один файл? когда я его уже два раза прикреплял, в нем указан перечень данных. я ведь вроде все описал в скриншоте сообщение №1 — открыл ваш файл, вписал туда текст (в вашем случае там было указано «Значение 1», я указал «Другой текст») не могу понять правда зачем, какая разница какое слово там будет?! ну и еще раз перепишу сообщение которые было выше: — «Для второго списка данных будет не много, там можно на втором листе перечислять этих пять составов и все, во втором списке нужна будет кнопка, потому что сначала вручную будет писаться текст в ячейку, и когда нужно будет в эту ячейку дописать состав, то нужно нажать на кнопку Состав, выбрать, и потом кликнуть на любое место чтобы добавилось» Сам перечень данных (Категории, Состав) я разместил на втором листе (Лист2), т.е. там должны находится исх.данные, а на первом листе уже сами результаты. Спасибо! Изменено: iskatel — 02.08.2015 15:16:42 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#18 02.08.2015 21:10:25
Не должен я готовить данные — переписывать с рисунка в таблицу. Это Вы должны сделать.
Нет на втором листе списка «Состав». |
||||
iskatel Пользователь Сообщений: 14 |
Юрий М, Извинись, действительно на втором листе «Составы» не указал, получается при сохранении не нажал сохранить. прик. новый |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
|
iskatel Пользователь Сообщений: 14 |
Юрий М, и еще вопросик: можно в столбце «Размер» сделать так же как в столбце «Категории» Спасибо! Изменено: iskatel — 04.08.2015 12:09:43 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
1. Отображение/скрытие первого и второго ЛистБоксов исправил. |
iskatel Пользователь Сообщений: 14 |
#23 04.08.2015 21:02:14 Юрий М, Спасибо за правки, сейчас вроде галочки ставятся сразу. скажите где в коде указывается чтобы в отображающем списке «Составы» данные брались с «Лист2» ячейки B2:B5 (мне нужно с В2:В15)
Изменено: iskatel — 04.08.2015 21:02:59 |
||
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
В коде этого нет — задано в свойствах самого ЛистБокса. Или заполнять программно. |
iskatel Пользователь Сообщений: 14 |
Я никак не могу понять какой ЛистБокс и где увидеть его свойства? в интернете пишут все про VBA? |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Включите режим конструктора — отобразятся все ЛистБоксы, выделяем нужный и жмём кнопку «Свойства» |
iskatel Пользователь Сообщений: 14 |
Огромное спасибо! Все получилось! ну а вообще как то все запутано в ексле и код сам и сам методы работы vba |
Jack_Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Юрий М, о посте №10… Здравствуйте! Подскажите, как сделать, чтобы данные вводились при выборе, а не кнопкой с макросом, ну или чтобы кнопка была всегда рядом с активной ячейкой (списки огромные — каждый раз листать вверх очень неудобно… Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Несколько вариантов: |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
#30 30.01.2016 13:58:16 А вот и реализация. Обе кнопки выполняют одну и туже функцию. Оставьте нужную. Или обе Прикрепленные файлы
|
Под выпадающим списком понимается содержание в одной ячейке нескольких значений. Когда пользователь щелкает по стрелочке справа, появляется определенный перечень. Можно выбрать конкретное.
Очень удобный инструмент Excel для проверки введенных данных. Повысить комфорт работы с данными позволяют возможности выпадающих списков: подстановка данных, отображение данных другого листа или файла, наличие функции поиска и зависимости.
Создание раскрывающегося списка
Путь: меню «Данные» — инструмент «Проверка данных» — вкладка «Параметры». Тип данных – «Список».
Ввести значения, из которых будет складываться выпадающий список, можно разными способами:
- Вручную через «точку-с-запятой» в поле «Источник».
- Ввести значения заранее. А в качестве источника указать диапазон ячеек со списком.
- Назначить имя для диапазона значений и в поле источник вписать это имя.
Любой из вариантов даст такой результат.
Выпадающий список в Excel с подстановкой данных
Необходимо сделать раскрывающийся список со значениями из динамического диапазона. Если вносятся изменения в имеющийся диапазон (добавляются или удаляются данные), они автоматически отражаются в раскрывающемся списке.
- Выделяем диапазон для выпадающего списка. В главном меню находим инструмент «Форматировать как таблицу».
- Откроются стили. Выбираем любой. Для решения нашей задачи дизайн не имеет значения. Наличие заголовка (шапки) важно. В нашем примере это ячейка А1 со словом «Деревья». То есть нужно выбрать стиль таблицы со строкой заголовка. Получаем следующий вид диапазона:
- Ставим курсор в ячейку, где будет находиться выпадающий список. Открываем параметры инструмента «Проверка данных» (выше описан путь). В поле «Источник» прописываем такую функцию:
Протестируем. Вот наша таблица со списком на одном листе:
Добавим в таблицу новое значение «елка».
Теперь удалим значение «береза».
Осуществить задуманное нам помогла «умная таблица», которая легка «расширяется», меняется.
Теперь сделаем так, чтобы можно было вводить новые значения прямо в ячейку с этим списком. И данные автоматически добавлялись в диапазон.
- Сформируем именованный диапазон. Путь: «Формулы» — «Диспетчер имен» — «Создать». Вводим уникальное название диапазона – ОК.
- Создаем раскрывающийся список в любой ячейке. Как это сделать, уже известно. Источник – имя диапазона: =деревья.
- Снимаем галочки на вкладках «Сообщение для ввода», «Сообщение об ошибке». Если этого не сделать, Excel не позволит нам вводить новые значения.
- Вызываем редактор Visual Basic. Для этого щелкаем правой кнопкой мыши по названию листа и переходим по вкладке «Исходный текст». Либо одновременно нажимаем клавиши Alt + F11. Копируем код (только вставьте свои параметры).
- Сохраняем, установив тип файла «с поддержкой макросов».
- Переходим на лист со списком. Вкладка «Разработчик» — «Код» — «Макросы». Сочетание клавиш для быстрого вызова – Alt + F8. Выбираем нужное имя. Нажимаем «Выполнить».
Private Sub Worksheet_Change(ByVal Target As Range) Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub If Target.Address = "$C$2" Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Range("Деревья"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & _ Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Range("Деревья").Cells(Range("Деревья").Rows.Count + 1, 1) = Target End If End If End If End Sub
Когда мы введем в пустую ячейку выпадающего списка новое наименование, появится сообщение: «Добавить введенное имя баобаб в выпадающий список?».
Нажмем «Да» и добавиться еще одна строка со значением «баобаб».
Выпадающий список в Excel с данными с другого листа/файла
Когда значения для выпадающего списка расположены на другом листе или в другой книге, стандартный способ не работает. Решить задачу можно с помощью функции ДВССЫЛ: она сформирует правильную ссылку на внешний источник информации.
- Делаем активной ячейку, куда хотим поместить раскрывающийся список.
- Открываем параметры проверки данных. В поле «Источник» вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).
Имя файла, из которого берется информация для списка, заключено в квадратные скобки. Этот файл должен быть открыт. Если книга с нужными значениями находится в другой папке, нужно указывать путь полностью.
Как сделать зависимые выпадающие списки
Возьмем три именованных диапазона:
Это обязательное условие. Выше описано, как сделать обычный список именованным диапазоном (с помощью «Диспетчера имен»). Помним, что имя не может содержать пробелов и знаков препинания.
- Создадим первый выпадающий список, куда войдут названия диапазонов.
- Когда поставили курсор в поле «Источник», переходим на лист и выделяем попеременно нужные ячейки.
- Теперь создадим второй раскрывающийся список. В нем должны отражаться те слова, которые соответствуют выбранному в первом списке названию. Если «Деревья», то «граб», «дуб» и т.д. Вводим в поле «Источник» функцию вида =ДВССЫЛ(E3). E3 – ячейка с именем первого диапазона.
- Создаем стандартный список с помощью инструмента «Проверка данных». Добавляем в исходный код листа готовый макрос. Как это делать, описано выше. С его помощью справа от выпадающего списка будут добавляться выбранные значения.
- Чтобы выбранные значения показывались снизу, вставляем другой код обработчика.
- Чтобы выбираемые значения отображались в одной ячейке, разделенные любым знаком препинания, применим такой модуль.
- На вкладке «Разработчик» находим инструмент «Вставить» – «ActiveX». Здесь нам нужна кнопка «Поле со списком» (ориентируемся на всплывающие подсказки).
- Щелкаем по значку – становится активным «Режим конструктора». Рисуем курсором (он становится «крестиком») небольшой прямоугольник – место будущего списка.
- Жмем «Свойства» – открывается перечень настроек.
- Вписываем диапазон в строку ListFillRange (руками). Ячейку, куда будет выводиться выбранное значение – в строку LinkedCell. Для изменения шрифта и размера – Font.
Выбор нескольких значений из выпадающего списка Excel
Бывает, когда из раскрывающегося списка необходимо выбрать сразу несколько элементов. Рассмотрим пути реализации задачи.
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("Е2:Е9")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(0, 1)) = 0 Then Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("Н2:К2")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(1, 0)) = 0 Then Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
newVal = Target
Application.Undo
oldval = Target
If Len(oldval) <> 0 And oldval <> newVal Then
Target = Target & "," & newVal
Else
Target = newVal
End If
If Len(newVal) = 0 Then Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Не забываем менять диапазоны на «свои». Списки создаем классическим способом. А всю остальную работу будут делать макросы.
Выпадающий список с поиском
Скачать пример выпадающего списка
При вводе первых букв с клавиатуры высвечиваются подходящие элементы. И это далеко не все приятные моменты данного инструмента. Здесь можно настраивать визуальное представление информации, указывать в качестве источника сразу два столбца.
Skip to content
Одной из наиболее полезных функций при вводе данных является возможность использовать выпадающий список в Excel. Он позволяет выбирать значение из предварительно определенного перечня и разрешает вводить только те данные, которые соответствуют вашим требованиям. Мы предложим вам несколько простых способов, как создавать выпадающие списки в Excel. Более сложные способы, основанные на динамических диапазонах и использовании данных из других таблиц, мы также рассмотрим.
Зачем нужен выпадающий список?
Часто случается так, что в какой-то из колонок вашей таблицы нужно вводить одинаковые повторяющиеся значения. К примеру, фамилии сотрудников, названия товаров или делать выбор в ячейке Excel вида «да – нет». Что может случиться? Конечно, в первую очередь будут ошибки при вводе. Человеческий фактор ведь никто не отменял. Чем нам сие грозит? К примеру, когда мы решим подсчитать, сколько заказов выполнил каждый из менеджеров, то окажется, что фамилий больше, чем сотрудников. Далее придётся искать ошибки, исправлять их и вновь повторять расчет.
Ну и конечно же, все время руками вводить одни и те же слова – просто бессмысленная работа и потеря времени. Вот здесь-то выпадающие списки нам и пригодятся. При нажатии выпадает перечень заранее определённых значений, из которых просто необходимо указать какое-то одно.
Важно то, что вы теперь будете не писать, а выбирать их с помощью мыши или клавиатуры. Это значительно ускоряет работу, а также гарантирует защиту от случайных ошибок. Проверка того, что мы записали в таблицу, теперь уже не нужна.
1 — Самый быстрый способ создать выпадающий список.
Как проще всего добавить выпадающий список в таблицу Excel? Всего один щелчок правой кнопкой мыши по пустой клетке под столбцом с данными, затем команда контекстного меню «Выберите из раскрывающегося списка» (Choose from drop-down list). А можно просто стать в нужное место и нажать сочетание клавиш Alt+стрелка вниз
. Появится отсортированный перечень уникальных ранее введенных значений.
Способ не работает, если нашу ячейку и столбец с записями отделяет хотя бы одна пустая строка или вы хотите ввести то, что еще не вводилось выше. На нашем примере это хорошо видно.
2 — Используем меню.
Давайте рассмотрим небольшой пример, в котором нам нужно постоянно вводить в таблицу одни и те же наименования товаров. Выпишите в столбик данные, которые мы будем использовать (например, названия товаров). В нашем примере — в диапазон G2:G7.
Выделите ячейку таблицы (можно сразу несколько), в которых хотите использовать ввод из заранее определенного перечня. Там мы разместим наш выпадающий список.
Далее в главном меню выберите на вкладке Данные – Проверка… (Data – Validation). Затем укажите пункт Тип данных (Allow) и выберите вариант Список (List). Поставьте курсор в поле Источник (Source) и впишите в него адреса с эталонными значениями элементов — в нашем случае G2:G7. Рекомендуется также использовать здесь абсолютные ссылки (для их установки нажмите клавишу F4).
Бонусом здесь идет возможность задать подсказку и сообщение об ошибке, если автоматически вставленное значение вы захотите изменить вручную. Для этого существуют вкладки Подсказка по вводу (Input Message) и Сообщение об ошибке (Error Alert).
В качестве источника значений для выпадающего списка в Excel можно использовать также и именованный диапазон.
К примеру, диапазону I2:I13, содержащему названия месяцев, можно присвоить наименование «месяцы». Затем имя можно ввести в поле «Источник».
Кроме того, и источник и в виде обычного диапазона ячеек, и именованный диапазон могут находиться на других листах вашей рабочей книги.
Но вы можете и не использовать диапазоны или ссылки, а просто определить возможные варианты прямо в поле «Источник». К примеру, чтобы реализовать в таблице Excel простейший выбор «да – нет», вы можете вписать туда –
Да;Нет
Используйте для разделения значений точку с запятой, запятую, либо другой символ, установленный у вас в качестве разделителя элементов. (Смотрите Панель управления — Часы и регион — Форматы — Дополнительно — Числа.)
3 — Создаем элемент управления.
Вставим на лист новый объект – элемент управления «Поле со списком» с последующей привязкой его к данным на листе Excel. Делаем:
- Откройте вкладку Разработчик (Developer). Если её не видно, то в Excel 2007 нужно нажать кнопку Офис – Параметры – флажок Отображать вкладку Разработчик на ленте (Office Button – Options – Show Developer Tab in the Ribbon) или в версии 2010–2013 и выше щелкните правой кнопкой мыши по ленте, выберите команду Настройка ленты (Customize Ribbon) и включите отображение вкладки Разработчик (Developer) с помощью флажка.
- Найдите нужный значок среди элементов управления (см.рисунок ниже).
Вставив элемент управления на рабочий лист, щелкните по нему правой кнопкой мышки и выберите в появившемся меню пункт «Формат объекта». Далее указываем диапазон ячеек, в котором записаны допустимые значения для ввода. В поле «Связь с ячейкой» укажем, куда именно поместить результат. Важно учитывать, что этим результатом будет не само значение из указанного нами диапазона, а только его порядковый номер.
Но нам ведь нужен не этот номер, а соответствующее ему слово. Используем функцию ИНДЕКС (INDEX в английском варианте). Она позволяет найти в списке значений одно из них соответственно его порядковому номеру. В качестве аргументов ИНДЕКС укажите диапазон ячеек (F5:F11) и адрес с полученным порядковым номером (F2).
Формулу в F3 запишем, как показано на рисунке:
=ИНДЕКС(F5:F11;F2)
Как и в предыдущем способе, здесь возможны ссылки на другие листы, на именованные диапазоны.
Обратите также внимание, что здесь мы не привязаны ни к какой конкретному месту таблицы. Таким списком Excel удобно пользоваться, поскольку его можно свободно «перетаскивать» мышкой в любое удобное место. Для этого на вкладке «Разработчик» нужно активизировать режим конструктора.
4 — Элемент ActiveX
Действуем аналогично предыдущему способу, но выбираем иконку чуть ниже — из раздела «Элементы ActiveX».
Определяем перечень допустимых значений (1). Обратите внимание, что здесь для показа можно выбирать сразу несколько колонок. Затем выбираем адрес, по которому будет вставлена нужная позиция из перечня (2).Указываем количество столбцов, которые будут использованы как исходные данные (3), и номер столбца, из которого будет происходить выбор для вставки на лист (4). Если укажете номер столбца 2, то в А5 будет вставлена не фамилия, а должность. Можно также указать количество строк, которое будет выведено в перечне. По умолчанию — 8. Остальные можно прокручивать мышкой (5).
Этот способ сложнее предыдущего, но зато возвращает сразу значение, а не его номер. Поэтому необходимость в промежуточной ячейке и обработке ее при помощи ИНДЕКС — отпадает. Думаю, таким списком пользоваться гораздо удобнее.
5 — Выпадающий список в Excel с автозаполнением
Задача: Создать перечень, в который будут автоматически добавляться значения из заданного динамического диапазона. Если в любую ячейку этого диапазона будут внесены изменения, то сразу же изменится и набор предлагаемых к выбору значений. Никакие формулы и настройки здесь корректировать не нужно.
Вот как автозаполнение может выглядеть на простом примере:
Способ 1. Укажите заведомо большой источник значений для списка.
Самая простая и несложная хитрость. В начале действуем по обычному алгоритму действий: в меню выбираем на вкладке Данные – Проверка … (Data – Validation). Из перечня Тип данных (Allow) выберите вариант Список (List). Поставьте курсор в поле Источник (Source). Зарезервируем в списке набор с большим запасом: например, до 55-й строки, хотя занято у нас только 7. Обязательно не забудьте поставить галочку в чекбоксе «Игнорировать пустые …». Тогда ваш «резерв» из пустых значений не будет вам мешать.
Действительно самый простой способ, но не слишком удобный. Ведь зарезервированное место может и закончиться…
Конечно, в качестве источника можно указать и весь столбец:
=$A:$A
Но обработка такого большого количества ячеек может несколько замедлить вычисления. Особенно в больших таблицах Excel.
Способ 2. Применяем именованный диапазон.
Именованный диапазон отличается от обычного тем, что ему присвоено определенное наименование. С ним гораздо проще работать, так как не нужно вводить ссылку, а достаточно просто указать его имя. Давайте рассмотрим небольшой пример.
В столбце А находятся имена сотрудников, которые мы будем вводить. Перечень может быть сколь угодно длинным. Нам необходимо, чтобы каждая новая запись включалась в раскрывающийся список без всяких дополнительных действий с нашей стороны.
Выделим имеющийся в нашем распоряжении перечень имен A2:A10. Затем присвоим ему название, заполнив поле «Имя», находящееся левее строки формул.
Так вы присвоите какое-то имя этому диапазону Excel.
Создадим в С2 перечень значений. В качестве источника для него укажем выражение
=имя
Недостатком работы с таким выпадающим списком в Excel является то, что новые значения нельзя просто дописывать в конец используемого перечня. Они останутся за пределами именованного диапазона. Если что-то нужно добавить, то их придется вставлять внутрь диапазона, использовав вставку пустой строки.
Перечень ещё можно отсортировать, чтобы удобно было пользоваться.
Главное неудобство пользования таким списком заключается в том, что используемый нами диапазон — статический. Автоматически его размеры измениться не могут. Согласитесь, не слишком удобный и технологичный способ. Слишком много ручных операций.
А теперь давайте пойдем дальше и посмотрим, как можно работать с динамическим диапазоном, который автоматически подстраивается под вводимые значения.
Способ 3. Выпадающий список на основе «умной» таблицы Excel.
Начиная с 2007 года таблица для Excel — уже не просто набор строк и столбцов. Если вы просто расположите показатели с привычном для нас табличном виде, то он не будет считать их таблицей. Существует специальное форматирование, после чего диапазон начинает вести себя как единое целое, приобретая целый ряд интересных свойств. В частности, он начинает сам отслеживать свои размеры, динамически изменяясь при корректировке данных.
Любой набор значений в таблице может быть таким образом преобразован. Например, A1:A8. Выделите их мышкой. Затем преобразуйте в таблицу, используя меню Главная — Форматировать как таблицу (Home — Format as Table). Укажите, что в первой строке у вас находится название столбца. Это будет «шапка» вашей таблицы. Внешний вид может быть любым: это не более чем внешнее оформление и ни на что больше оно не влияет.
Как уже было сказано выше, «умная» таблица хороша для нас тем, что динамически меняет свои размеры при добавлении в нее информации. Если в строку ниже нее вписать что-либо, то она тут же присоединит к себе её. Таким образом, новые значения можно просто дописывать. К примеру, впишите в A9 слово «кокос», и таблица тут же расширится до 9 строк.
Следовательно, автоматическое обновление набора используемой информации в списке можно организовать, если использовать содержимое какого-либо столбца «умной» таблицы.
Осталось только обозначить ее как источник. Проблема заключается в том, что программа в качестве источника в списке не понимает выражение вида
=Таблица1[Столбец1]
и не считает его формулой. Хотя в обычных выражениях на листе вашей рабочей книги это вполне будет работать. Эта конструкция обозначает ссылку на первый столбец. Но в поле «Источник» она почему-то игнорируется.
Чтобы использовать «умную таблицу» как источник, нам придется пойти на небольшую хитрость и воспользоваться функцией ДВССЫЛ (INDIRECT в английском варианте). Эта функция преобразует текстовую переменную в обычную ссылку.
Формула теперь будет выглядеть следующим образом:
=ДВССЫЛ(«Таблица5[Продукт]»)
Таблица5 — имя, автоматически присвоенное «умной таблице». У вас оно может быть другим. На вкладке меню Конструктор (Design) можно изменить стандартное имя на свое (но без пробелов!). По нему мы сможем потом адресоваться к нашей таблице на любом листе книги.
«Продукт» — название нашего первого и единственного столбца, присвоено по его заголовку.
Не забудьте также заключить все выражение в кавычки, чтобы обозначить его как текстовую переменную.
Теперь если в A9 вы допишете еще один фрукт (например, кокос), то он тут же автоматически появится и в нашем перечне. Аналогично будет, если мы что-то удалим. Задача автоматического увеличения выпадающего списка значений решена.
Надеемся, вы сможете теперь с помощью списков без ошибок вводить часто повторяющиеся данные в таблицу Excel при помощи выпадающего списка.
А вот еще полезная для вас информация:
Выпадающий список, с автозаполнением чекбоксов. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |