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

Как быстро перемещать элементы между двумя списками в Excel?

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

Приходилось ли вам когда-нибудь перемещать элементы из одного списка в другой, как на скриншоте ниже? Далее я покажу, как выполнить эту операцию в Excel.

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

Перемещение элементов между списками


Перемещение элементов между списками

Встроенной функции для выполнения этой задачи нет, но у меня есть код VBA, который может помочь.

1. Сначала создайте список данных, который будет отображаться в виде элементов в списках на новом листе с названием Admin_Lists.

снимок экрана с исходными данными

2. Затем выделите эти данные и перейдите в поле Имя, чтобы присвоить им имя ItemList. См. скриншот:

снимок экрана с присвоением имени исходным данным в поле «Имя»

3. Затем на листе, где будут находиться два списка, нажмите Разработчик > Вставить > Поле со списком (элемент управления ActiveX) и нарисуйте два поля со списком. См. скриншот:

снимок экрана с выбором элемента управления «Поле со списком» на вкладке «Разработчик»снимок экрана с правой стрелкойснимок экрана с двумя созданными полями со списком

Если вкладка Разработчик скрыта на вашей Ленте, Как отобразить вкладку «Разработчик» в Excel 2007/2010/2013 Лента? — эта статья расскажет, как её показать.

4. Затем нажмите Разработчик > Вставить > Кнопка (элемент управления ActiveX) и нарисуйте четыре кнопки между двумя списками. См. скриншот:

снимок экрана с выбором элемента управления «Кнопка»снимок экрана с правой стрелкой 1снимок экрана с созданными кнопками

Теперь переименуйте четыре кнопки команд, воспользовавшись функцией «Новое имя».

5. Выделите первую кнопку команды, нажмите Свойства и в области Свойства задайте ей имя BTN_moveAllRight, а также введите >> в текстовое поле рядом с параметром Надпись. См. скриншот:

снимок экрана с изменением свойств кнопки

6. Повторите шаг 5, чтобы переименовать последние три кнопки команды, как указано ниже, и добавьте соответствующие стрелки в их надписи. См. скриншот:

BTN_MoveSelectedRight

BTN_moveAllLeft

BTN_MoveSelectedLeft

снимок экрана со второй кнопкой после изменения свойствснимок экрана с третьей кнопкой после изменения свойствснимок экрана с четвертой кнопкой после изменения свойств

7. Щёлкните правой кнопкой мыши по имени листа, содержащего списки и кнопки команд, и выберите в контекстном меню пункт Просмотреть код. См. скриншот:

снимок экрана с открытием редактора кода VBA

8. Скопируйте и вставьте приведённый ниже макрокод в окно Модуль, затем сохраните код и закройте окно Microsoft Visual Basic для приложений. См. скриншот

VBA: Перемещение элементов между двумя списками

Private Sub Worksheet_Activate()
'UpdatebyExtendoffice20171117
    Dim xCell As Range
    Dim xRg As Range
    Set xRg = Sheets("Admin_Lists").Range("ItemList")
    Me.ListBox1.Clear
    Me.ListBox2.Clear
    With Me.ListBox1
        .LinkedCell = ""
        .ListFillRange = ""
        For Each xCell In xRg
            If xCell <> "" Then
                .AddItem xCell.Value
            End If
        Next xCell
    End With
    Me.ListBox1.MultiSelect = fmMultiSelectMulti
    Me.ListBox2.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub BTN_MoveSelectedLeft_Click()
    Call moveSigle(Me.ListBox2, Me.ListBox1)
End Sub

Private Sub BTN_MoveSelectedRight_Click()
    Call moveSigle(Me.ListBox1, Me.ListBox2)
End Sub

Private Sub BTN_moveAllLeft_Click()
    Call moveAll(Me.ListBox2, Me.ListBox1)
End Sub

Private Sub BTN_moveAllRight_Click()
    Call moveAll(Me.ListBox1, Me.ListBox2)
End Sub

Sub moveAll(xListBox1 As Object, xListBox2 As Object)
    Dim I As Long
    For I = 0 To xListBox1.ListCount - 1
        xListBox2.AddItem xListBox1.List(I)
    Next I
    xListBox1.Clear
End Sub

Sub moveSigle(xListBox1 As Object, xListBox2 As Object)
    Dim I As Long
    For I = 0 To xListBox1.ListCount - 1
        If I = xListBox1.ListCount Then Exit Sub
        If xListBox1.Selected(I) = True Then
            xListBox2.AddItem xListBox1.List(I)
            xListBox1.RemoveItem I
            I = I - 1
        End If
    Next
End Sub

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

9. Перейдите на другой лист и вернитесь обратно на лист со списками — теперь данные будут отображаться в первом списке. Нажимайте кнопки команд, чтобы перемещать элементы между двумя списками.

снимок экрана с исходными данными в одном поле со списком после выполнения кода VBA

Переместить выделенное

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

Переместить всё

снимок экрана с обозначением кнопки, которая позволяет переместить все элементы из одного списка в другой одновременноснимок экрана со стрелкой 2снимок экрана с одновременным перемещением всех элементов из одного поля со списком в другое

Лучшие инструменты повышения продуктивности в 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-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
  • Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек