Перейти к содержимому

Kutools для Office — один пакет. Пять инструментов. Выполняйте больше.

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

Author Sun Last modified

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

a screenshot showing the listboxes before moving items a screenshot of an arrow a screenshot showing the listboxes after moving items

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


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

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

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

a screenshot of the source data

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

a screenshot of naming the source data in the Name box

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

a screenshot of selecting the List Box control under the Developer tab a screenshot of the right arrow a screenshot showing two created list boxes

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

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

a screenshot of selecting command button control a screenshot of a right arrow 1 a screenshot showing the created command buttons

Теперь переименуйте четыре кнопки команд с новыми именами.

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

a screenshot showing how to changing the properties of the command button

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

BTN_MoveSelectedRight

BTN_moveAllLeft

BTN_MoveSelectedLeft

a screenshot of the second command button after changing the properties a screenshot of the third command button after changing the properties a screenshot of the fourth command button after changing the properties

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

a screenshot of opening the VBA code editor

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

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

a screenshot showing how to use the VBA code

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

a screenshot showing the source data in one list box after running the VBA code

Переместить выбор

a screenshot of moving items from one list box to another one by one a screenshot of the arrow a screenshot showing two items have been moved to the right list box

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

a screenshot of marking which command button can be used to move all items from one list to another at the same time a screenshot of arrow 2 a screenshot showing all items are moved from one list box to another at the same time

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

🤖 Kutools AI Aide: Совершенно новый подход к анализу данных благодаря: Интеллектуальное выполнение |  Генерация кода  |  Создание пользовательских формул |  Анализ данных и построение диаграмм  |  Вызов Kutools Functions
Популярные функции: Поиск, выделение или отметка дубликатов | Удалить пустые строки | Объединить столбцы или адреса без потери данных | Округлить ...
Супер ПОИСК: 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.

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