VBA для сортировки столбцов в Excel (4 метода)

  • Поделись Этим
Hugh West

Для сортировки в Excel с помощью VBA вам необходимо применить Диапазон.Сортировка В этой статье мы покажем вам, как сортировать столбец в Excel с помощью Диапазон.Сортировка метод VBA .

Скачать рабочую тетрадь

Вы можете скачать бесплатную практическую рабочую тетрадь Excel отсюда.

Сортировка столбцов с помощью VBA.xlsm

Метод Range.Sort в Excel VBA

Диапазон.Сортировка метод в VBA сортирует диапазон значений в Excel. Здесь Диапазон это объектная переменная, которая определяет диапазон ячеек, которые мы хотим сортировать в порядке возрастания или убывания.

Ниже приведены параметры, о которых необходимо знать при работе с этим методом.

Параметр Обязательный/ Факультативный Тип данных Описание
Ключ Дополнительно Вариант Указывает диапазон или столбец, значения которого должны быть отсортированы.
Заказ Дополнительно XlSortOrder Указывает порядок, в котором будет выполняться сортировка.
  • xlПоднимаясь = Сортировать в порядке возрастания.
  • xlDescending = Сортировать в порядке убывания.
Заголовок Дополнительно XlYesNoGuess Указывает, содержит ли первая строка заголовки или нет.
  • xlNo = Когда колонка не имеет заголовков; Значение по умолчанию.
  • xlYes = Когда столбцы имеют заголовки.
  • xlGuess = Позволить Excel определить заголовки.

4 метода реализации VBA для сортировки столбцов в Excel

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

1. Встраивание VBA для сортировки одного столбца без заголовка в Excel

Если вы хотите сортировка одного столбца в рабочем листе Excel с VBA код, затем выполните следующие действия.

Это наш столбец, который мы будем сортировать с помощью VBA код.

Шаги:

  • Нажмите Alt + F11 на клавиатуре или перейдите на вкладку Разработчик -> Visual Basic открыть Редактор Visual Basic .

  • Во всплывающем окне кода в строке меню нажмите Вставка -> Модуль .

  • Скопируйте следующий код и вставьте его в окно кода.
 Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub 

Теперь ваш код готов к выполнению.

Вот,

  • Key1:=Range("B5") → Указано B5 чтобы код знал, какой столбец сортировать.
  • Order1:=xlAscending → Уточнил заказ как xlПоднимаясь для сортировки столбца по возрастанию. Если вы хотите отсортировать столбец по убыванию, то напишите xlDescending вместо этого.
  • Заголовок:= xlNo → Поскольку наша колонка не имеет заголовка, мы указали ее с помощью параметра xlNo вариант.

  • Нажмите F5 на клавиатуре или в строке меню выберите Run -> Run Sub/UserForm Вы также можете просто нажать на маленький значок Play в строке подменю, чтобы запустить макрос.

Вы увидите, что ваша колонка теперь отсортированные в порядке возрастания .

Обратите внимание, что здесь мы определили диапазон данных вручную как Range("B5:B15") .

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

 Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub 

Обратите внимание, что вместо того, чтобы определять диапазон вручную с помощью Range("B5:B15") , мы написали, Диапазон( "B5", Range("B5"). End(xlDown)) .

Это отсортирует столбец по последней последовательно заполненной ячейке в нем. Если есть пустые ячейки, данные будут рассматриваться только до первой пустой ячейки.

Подробнее: VBA для сортировки таблицы в Excel (4 метода)

2. Вставка макроса VBA для сортировки одного столбца с заголовком

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

На этот раз мы научимся сортировать его с помощью макрос VBA .

Шаги:

  • Так же, как и раньше, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • В окне кода скопируйте следующий код и вставьте его.
 Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub 

Теперь ваш код готов к выполнению.

Вот,

  • Key1:=Range("B5") → Указано B5 чтобы код знал, какой столбец сортировать.
  • Order1:=xlDescending → На этот раз мы будем сортировать столбец по убыванию, поэтому укажите порядок как xlDescending .
  • Заголовок:= xlYes → Поскольку на этот раз у нашей колонки есть заголовок, мы указали его с помощью xlYes вариант.

  • Запускайте этот код, и вы получите столбец с заголовком, отсортированный в порядке убывания .

Читать далее: Как сортировать ListBox с помощью VBA в Excel (полное руководство)

Похожие чтения:

  • Как отсортировать IP-адрес в Excel (6 методов)
  • [Решено!] Сортировка в Excel не работает (2 решения)
  • Как добавить кнопку сортировки в Excel (7 способов)
  • Сортировка диапазона с помощью VBA в Excel (6 примеров)
  • Как сортировать по имени в Excel (3 примера)

3. Макрос VBA для сортировки нескольких столбцов с заголовком или без него

Вы также можете сортировка нескольких столбцов в наборе данных с помощью кода VBA.

Шаги:

  • Как было показано ранее, открытые Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • В окне кода скопируйте следующий код и вставьте его.
 Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With End Sub 

Теперь ваш код готов к выполнению.

Вот,

.SortFields.Add Key:=Range("B4"), Order:=xlAscending

.SortFields.Add Key:=Range("C4"), Order:=xlAscending

По этим двум линиям мы определяем Ячейка B4 и C4 сортировать два столбца, связанные с ними в порядок возрастания .

Поскольку в нашем наборе данных есть заголовки, мы указали Заголовок = xlYes в противном случае мы бы написали Заголовок = xlNo внутри кода.

  • Запускайте этот код, и вы получите столбцы с заголовком, отсортированные в порядке возрастания .

4. Макрос для сортировки данных двойным щелчком по заголовку в Excel

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

Шаги:

  • Щелкните правой кнопкой мыши на вкладка листа .
  • В появившемся списке опций нажмите Посмотреть код .
  • Появится окно кода, скопируйте следующий код и вставьте его туда.
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B4:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub End Sub 
  • Сохранить код.

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

Подробнее: Как сортировать и фильтровать данные в Excel (полное руководство)

О чем следует помнить

  • Вы можете создать именованный диапазон и использовать его вместо этого, когда вы передаете диапазон ссылок на ячейки внутри функции Сортировать Например, если вы хотите отсортировать диапазон A1:A10 , вместо того, чтобы передавать его каждый раз внутри кода, вы можете создать именованный диапазон, например, " SortRange " и использовать его с Диапазон.Сортировка метод, например Range("SortRange") .
  • Если вы не уверены, имеет ли ваш набор данных заголовки или нет, вы можете позволить системе определить это с помощью параметра xlGuess параметр.

Заключение

В этой статье вы узнаете, как сортировать столбец в Excel VBA Я надеюсь, что эта статья была очень полезна для вас. Не стесняйтесь спрашивать, если у вас есть какие-либо вопросы по этой теме.

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.