KutoolsforOffice — Одно решение — пять мощных инструментов.Меньше усилий — больше результата.

Выбор нескольких элементов в раскрывающемся списке Excel Раскрывающийся список – полное руководство

АвторSiluviaДата изменения

Раскрывающиеся списки Excel — отличный инструмент для обеспечения согласованности данных и удобства ввода. Однако по умолчанию они позволяют выбрать только один элемент. Что делать, если нужно выбрать сразу несколько значений из одного раскрывающегося списка? В этом подробном руководстве рассматриваются способы включения множественного выбора в раскрывающихся списках Excel, управления дубликатами, настройки пользовательских разделителей и определения области действия таких списков.

Снимок экрана анимированной демонстрации множественного выбора в раскрывающемся списке Excel.

Совет: перед применением описанных ниже методов убедитесь, что вы уже создали Раскрывающийся список на своих листах. Если вы не знаете, как создать раскрывающиеся списки проверки данных Раскрывающийся список, следуйте инструкциям в этой статье:Как создать раскрывающийся список проверки данных Раскрывающийся список в Excel.

Включение множественного выбора в Раскрывающийся список

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

С использованием кода VBA

Чтобы включить множественный выбор в раскрывающемся списке, воспользуйтесь Visual Basic for Applications (VBA) в Excel. С помощью скрипта можно изменить поведение стандартного раскрывающегося списка, превратив его в список с поддержкой множественного выбора. Выполните следующие действия.

Шаг 1: Откройте редактор листа (кода)
  1. Откройте лист, содержащий раскрывающийся список, для которого нужно включить множественный выбор.
  2. Щёлкните правой кнопкой мыши по ярлыку листа и выберите в контекстном меню пункт «Просмотреть код».
    Снимок экрана пункта «Просмотреть код» в контекстном меню ярлыка листа Excel
Шаг 2: Используйте код VBA

Теперь скопируйте приведённый ниже код VBA и вставьте его в открывшееся окно листа (кода).

Код VBA: как включить множественный выбор в раскрывающихся списках Excel

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    Dim delimiter As String
    Dim TargetRange As Range

    Set TargetRange = Me.UsedRange ' Users can change target range here
    delimiter = ", " ' Users can change the delimiter here

    If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
    On Error Resume Next
    Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then Exit Sub
    Application.EnableEvents = False

    xValue2 = Target.Value
    Application.Undo
    xValue1 = Target.Value
    Target.Value = xValue2
    If xValue1 <> "" And xValue2 <> "" Then
        If Not (xValue1 = xValue2 Or _
                InStr(1, xValue1, delimiter & xValue2) > 0 Or _
                InStr(1, xValue1, xValue2 & delimiter) > 0) Then
            Target.Value = xValue1 & delimiter & xValue2
        Else
            Target.Value = xValue1
        End If
    End If

    Application.EnableEvents = True
    On Error GoTo 0
End Sub

Снимок экрана кода VBA, вставленного в редактор VBA Excel

Результат

Когда вы вернётесь на лист, раскрывающийся список позволит выбирать несколько вариантов. См. демонстрацию ниже:

Снимок экрана анимированной демонстрации множественного выбора в раскрывающемся списке Excel

Примечания:
Приведенный выше код VBA:
  • Применяется ко всем проверкам данных «Раскрывающийся список» на текущем листе — как уже созданным, так и тем, что будут добавлены в будущем.
  • Не позволяет выбирать один и тот же элемент более одного раза в каждом раскрывающемся списке.
  • В качестве разделителя для «Количество выбранных элементов» используется запятая. Чтобы использовать другие разделители, пожалуйста, ознакомьтесь с этим разделом, чтобы изменить разделитель.

С помощью Kutools для Excel за несколько кликов

Если вы не знакомы с VBA, гораздо проще воспользоваться функцией «Создать выпадающий список с множественным выбором» из набора «Kutools для Excel». Этот удобный инструмент легко добавляет поддержку множественного выбора в раскрывающиеся списки и позволяет гибко настраивать разделитель элементов и управление дубликатами — всё в соответствии с вашими потребностями.

Kutools для Excelпредлагает более 300 расширенных функций для автоматизации сложных задач, повышая креативность и эффективность.Интегрирован с возможностями искусственного интеллекта, Kutools точно автоматизирует задачи, делая управление данными легким.Подробная информация о Kutools для Excel…         Бесплатная пробная версия…

После установки Kutools для Excel перейдите на вкладку «Kutools», выберите «Раскрывающийся список» > «Создать выпадающий список с множественным выбором», а затем настройте его следующим образом.

  1. Укажите диапазон, содержащий раскрывающийся список, из которого нужно выбрать несколько элементов.
  2. Укажите разделитель для количества выбранных элементов в ячейке с раскрывающимся списком.
  3. Нажмите «OK», чтобы завершить настройку.
    Снимок экрана окна настройки многоэлементного раскрывающегося списка Kutools с параметрами диапазона и разделителя
Результат

Теперь при щелчке по ячейке с раскрывающимся списком в ограниченном диапазоне рядом с ней появится список. Просто нажмите кнопку «+» рядом с нужными элементами, чтобы добавить их в ячейку раскрывающегося списка, или кнопку «–», чтобы удалить ненужные элементы. См. демонстрацию ниже:

Снимок экрана демонстрации управления множественным выбором в раскрывающемся списке Excel с помощью Kutools

Примечания:
  • Установите флажок «Вставить разделитель и перенос строки», чтобы отображать количество выбранных элементов вертикально внутри ячейки. Для горизонтального расположения оставьте этот параметр отключённым.
  • Установите флажок «Включить функцию поиска», чтобы добавить строку поиска в ваш раскрывающийся список.
  • Чтобы воспользоваться этой функцией, сначала загрузите и установите Kutools для Excel.

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

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


Разрешение дублирования элементов в Раскрывающийся список

При включении множественного выбора в раскрывающемся списке дубликаты могут стать проблемой. Приведённый выше код VBA исключает повторяющиеся элементы из раскрывающегося списка. Если вам нужно сохранять дубликаты, используйте код VBA из этого раздела.

Код VBA: разрешение дубликатов в раскрывающемся списке проверки данных Раскрывающийся список

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    Dim delimiter As String
    Dim TargetRange As Range

    Set TargetRange = Me.UsedRange ' Users can change target range here
    delimiter = ", " ' Users can change the delimiter here

    If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
    On Error Resume Next
    Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then Exit Sub
    Application.EnableEvents = False

    xValue2 = Target.Value
    Application.Undo
    xValue1 = Target.Value
    Target.Value = xValue2
    If xValue1 <> "" And xValue2 <> "" Then
        Target.Value = xValue1 & delimiter & xValue2
    End If

    Application.EnableEvents = True
    On Error GoTo 0
End Sub
Результат

Теперь вы можете выбрать несколько элементов из раскрывающегося списка на текущем листе. Чтобы повторно добавить элемент в ячейку с раскрывающимся списком, просто выберите его снова из списка. См. снимок экрана:

Снимок экрана анимированной демонстрации повторяющихся значений в раскрывающемся списке Excel


Удаление существующих элементов из Раскрывающийся список

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

Код VBA: удаление любых существующих элементов из ячейки Раскрывающийся список

Private Sub Worksheet_Change(ByVal Target As Range)
    'Updated by Extendoffice 20240118
    Dim xRngDV As Range
    Dim TargetRange As Range
    Dim oldValue As String
    Dim newValue As String
    Dim delimiter As String
    Dim allValues As Variant
    Dim valueExists As Boolean
    Dim i As Long
    Dim cleanedValue As String

    Set TargetRange = Me.UsedRange ' Set your specific range here
    delimiter = ", " ' Set your desired delimiter here

    If Target.CountLarge > 1 Then Exit Sub

    ' Check if the change is within the specific range
    If Intersect(Target, TargetRange) Is Nothing Then Exit Sub

    On Error Resume Next
    Set xRngDV = Target.SpecialCells(xlCellTypeAllValidation)
    If xRngDV Is Nothing Or Target.Value = "" Then
        ' Skip if there's no data validation or if the cell is cleared
        Application.EnableEvents = True
        Exit Sub
    End If
    On Error GoTo 0

    If Not Intersect(Target, xRngDV) Is Nothing Then
        Application.EnableEvents = False
        newValue = Target.Value
        Application.Undo
        oldValue = Target.Value
        Target.Value = newValue

        ' Split the old value by delimiter and check if new value already exists
        allValues = Split(oldValue, delimiter)
        valueExists = False
        For i = LBound(allValues) To UBound(allValues)
            If Trim(allValues(i)) = newValue Then
                valueExists = True
                Exit For
            End If
        Next i

        ' Add or remove value based on its existence
        If valueExists Then
            ' Remove the value
            cleanedValue = ""
            For i = LBound(allValues) To UBound(allValues)
                If Trim(allValues(i)) <> newValue Then
                    If cleanedValue <> "" Then cleanedValue = cleanedValue & delimiter
                    cleanedValue = cleanedValue & Trim(allValues(i))
                End If
            Next i
            Target.Value = cleanedValue
        Else
            ' Add the value
            If oldValue <> "" Then
                Target.Value = oldValue & delimiter & newValue
            Else
                Target.Value = newValue
            End If
        End If

        Application.EnableEvents = True
    End If
End Sub
Результат

Этот код VBA позволяет выбирать несколько элементов из раскрывающегося списка и легко удалять любой уже выбранный элемент. Чтобы удалить конкретный элемент после множественного выбора, просто выберите его повторно из списка.

Снимок экрана анимированной демонстрации удаления существующих элементов из раскрывающегося списка Excel


Установка пользовательского разделителя

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

Как видно, во всех приведенных выше кодах VBA есть следующая строка:

delimiter = ", "

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

delimiter = "; "
Примечание: чтобы изменить разделитель на символ новой строки в этих кодах VBA, замените эту строку на:
delimiter = vbNewLine

Настройка Ограниченный диапазон

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

Как видно, во всех приведенных выше кодах VBA есть следующая строка:

Set TargetRange = Me.UsedRange

Вам нужно лишь изменить строку на:

Set TargetRange = Me.Range("C2:C10")
Примечание: здесь C2:C10 — диапазон, содержащий Раскрывающийся список, для которых вы хотите включить множественный выбор.

Выполнение в защищённом листе

Предположим, вы защитили лист паролем «123» и заранее установили для ячеек со списком статус «Разблокировано», чтобы функция множественного выбора оставалась доступной после включения защиты. Однако стандартные коды VBA в этом случае не сработают. В данном разделе представлен альтернативный скрипт VBA, специально разработанный для реализации множественного выбора на защищённом листе.

Код VBA: включение множественного выбора в Раскрывающийся список без дубликатов


Private Sub Worksheet_Change(ByVal Target As Range)
    'Updated by Extendoffice 20240118
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    Dim delimiter As String
    Dim TargetRange As Range
    Dim isProtected As Boolean
    Dim pswd As Variant

    Set TargetRange = Me.UsedRange ' Set your specific range here
    delimiter = ", " ' Users can change the delimiter here

    If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
    
    ' Check if sheet is protected
    isProtected = Me.ProtectContents
    If isProtected Then
        ' If protected, temporarily unprotect. Adjust or remove the password as needed.
        pswd = "yourPassword" ' Change or remove this as needed
        Me.Unprotect Password:=pswd
    End If

    On Error Resume Next
    Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then
        If isProtected Then Me.Protect Password:=pswd
        Exit Sub
    End If
    Application.EnableEvents = False

    xValue2 = Target.Value
    Application.Undo
    xValue1 = Target.Value
    Target.Value = xValue2
    If xValue1 <> "" And xValue2 <> "" Then
        If Not (xValue1 = xValue2 Or _
                InStr(1, xValue1, delimiter & xValue2) > 0 Or _
                InStr(1, xValue1, xValue2 & delimiter) > 0) Then
            Target.Value = xValue1 & delimiter & xValue2
        Else
            Target.Value = xValue1
        End If
    End If

    Application.EnableEvents = True
    On Error GoTo 0

    ' Re-protect the sheet if it was protected
    If isProtected Then
        Me.Protect Password:=pswd
    End If
End Sub
Примечание: в коде обязательно замените «yourPassword» в строке pswd = «yourPassword» на фактический пароль, используемый для защиты листа. Например, если ваш пароль — «abc123», строка должна выглядеть так: pswd = "abc123".

Включение множественного выбора в раскрывающихся списках Excel Раскрывающийся список значительно расширяет функциональность и гибкость ваших таблиц. Независимо от того, комфортно ли вам работать с кодом VBA или вы предпочитаете более простое решение, например Kutools, теперь вы можете превратить стандартные раскрывающиеся списки в динамические инструменты с возможностью множественного выбора. Благодаря этим навыкам вы создадите более интерактивные и удобные документы Excel. А если стремитесь глубже освоить возможности Excel, на нашем сайте вас ждёт множество обучающих материалов.Узнайте больше советов и приемов работы в Excel здесь.

Лучшие инструменты для повышения продуктивности в Office

🤖KUTOOLS AI Помощник: Революционизируйте Анализ данных на основе:Интеллектуального выполнения   |  Генерации кода|  Создания пользовательские формулы  |  Анализа данных и построения диаграмм|  Вызова Расширенные функции
Популярные функции:Поиск, выделение или Отметить дубликаты   |  Удалить пустые строки   |  Объединить столбцы или ячеек без потери данных   |  Округление без использования формул
Супер ПОИСК:VLookup по нескольким критериям  |  VLookup по нескольким значениям  |   VLookup по нескольким листам   |   Распознавание нечетких соответствий
Расширенный раскрывающийся список:Быстрое создание выпадающего списка   |  Зависимый выпадающий список   |  Выпадающий список с множественным выбором
Диспетчер столбцов:Добавление определённого количества столбцов|Перемещение столбцов|Переключение видимости скрытых столбцов|Сравнение диапазонов и столбцов
Рекомендуемые функции:Сетка фокусировки   |  Просмотр дизайна   |Улучшенная строка формулы   | Диспетчер рабочих книг и листов   |  Библиотека ресурсов(Автотекст)|  Выбор даты   |  Объединить листы  |  Шифрование/Расшифровать ячейки   | Отправка писем из списка   |  Супер фильтр   |   Специальный фильтр(Фильтр ячеек с жирным шрифтом/курсив/зачёркивание…) …
Лучшие наборы инструментов 15:12 Текстовыеинструменты(Добавить текст,Удалить определенные символы, …)|   50+Типыдиаграмм(Диаграмма Ганта, …)|   40+ Практические формулы(Рассчитать возраст на основе даты рождения, …)|   19 Инструментывставки(Вставить QR-код,Вставка изображения по пути, …)|   12 Инструментыпреобразования(Преобразовать в слова,Конвертация валют, …)|   7 Объединить и разделитьИнструменты(Расширенное объединение строк,Разделить ячейки, …)|… и многое другое
Используйте Kutools на предпочитаемом языке — поддержка английского, испанского, немецкого, французского, китайского и еще 40+ языков!

Раскройте весь потенциал Excel с помощью Kutools для Excel и ощутите новый уровень эффективности.Kutools для Excel предлагает более 300 расширенных функций для повышения продуктивности и Экономия времени.Нажмите здесь, чтобы получить самую необходимую вам функцию…


Office Tab Добавляет вкладки в Office и значительно упрощает вашу работу

  • Включает редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Открывает и создаёт несколько документов во вкладках одного окна вместо открытия новых окон.
  • Повышает продуктивность на 50 % и экономит сотни кликов мышью каждый день!

Все надстройки Kutools — единый установщик

Kutools for Office — это пакет, включающий надстройки для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro, что идеально подходит для команд, работающих в разных приложениях Office.

ExcelWordOutlookTabsPowerPoint
  • Комплексный пакет— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
  • Один установщик, одна лицензия— настройка за считанные минуты (готово к MSI)
  • Лучше работают вместе— повышение продуктивности во всех приложениях Office
  • 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
  • Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек