Как отсортировать диапазон с помощью VBA в Excel (6 примеров)

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

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

Скачать Практическое пособие

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

Сортировка диапазона в Excel.xlsm

Введение в заявление Range.Sort в Excel VBA

Цель Чтобы отсортировать диапазон данных ячеек.

Синтаксис:

выражение .Сорт ( Ключ1 , Заказ1 , Ключ2 , Тип , Заказ2 , Ключ3 , Заказ3 , Заголовок , OrderCustom , MatchCase , Ориентация , SortMethod , DataOption1 , DataOption2 , DataOption3 )

Здесь выражение представляет собой Диапазон объект, т.е. ячейку, строку, столбец или выборку ячеек.

Аргументы:

Мы должны обеспечить три основные параметры для Диапазон.Сортировка метод. Они...

Ключ - Диапазон ячеек из одного или нескольких столбцов, которые необходимо отсортировать.

Заказ - Укажите порядок сортировки по возрастанию или по убыванию.

Заголовок - Объявляет, имеют ли сортируемые столбцы заголовок или нет.

6 примеров сортировки диапазона в Excel VBA

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

1. Сортировка одноколоночного диапазона с помощью Excel VBA

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

Шаги:

  • Перейти к Вкладка разработчика в Лента Excel на нажмите на Visual Basic

  • Затем выберите Опция модуля из Вкладка "Вставка чтобы открыть новый модуль .

Теперь мы поместим наш код в сортировать сайт Возраст диапазон колонн.

1.1 Колонка с заголовком

Поместите следующий код в визуальный редактор кода.

 Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub 

Нажмите F5 или нажмите кнопку Запускайте кнопка для выполнить код.

Объяснение:

В приведенном выше коде мы поместили-

Выражение (объект Range)=Range("D4:D11"); сайт возрастная колонка с заголовок в ячейка D4 и значения в D5:D11.

Key = Range("D4"); сайт ключ для сортировка.

Order= xlDescending; как мы хотим сортировать значения из крупнейший на самый низкий мы устанавливаем порядок сортировки в качестве по убывающей.

Заголовок =xlYes; На следующем снимке экрана видно, что в поле набор данных имеет заголовок для каждого из колонны.

1.2 Колонка без заголовка

Поместите следующий код в визуальный редактор кода.

 Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub 

Нажмите F5 или нажмите кнопку Запускайте кнопка для выполнить код.

Объяснение:

В приведенном выше коде мы поместили-

Выражение (объект Range)=Range("D4:D10"); сайт возрастная колонка без заголовок есть значения в D4:D10.

Key = Range("D4"); сайт ключ для сортировка.

Order= xlDescending; как мы хотим сортировать значения из крупнейший на самый низкий мы устанавливаем порядок сортировки в качестве по убывающей.

Заголовок =xlNo; На следующем снимке экрана видно, что в поле набор данных не имеет заголовок.

Похожие материалы: Как сортировать столбцы в Excel без смешивания данных (3 способа)

2. Использование кода VBA для сортировки диапазона из нескольких столбцов в Excel

Чтобы показать сортировку в несколько столбцов нам нужно изменить наш набор данных немного. Мы вставлено несколько новый строки В измененном наборе данных строки 7, 8, и 9 иметь тот же значения для дата рождения и возраста но три разных имени . Эти имена являются не в любом конкретный заказ восходящий или нисходящий.

В этом примере мы расположим имена в порядке порядок возрастания Давайте выполним следующий код в редакторе visual basic:

 Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub 

Объяснение:

На скриншоте выше мы видим, что возраст в столбец D являются отсортировано в по убывающей порядок. Мы добавили еще два параметра в нашем предыдущем коде.

Key2: =Range("B4") , клавиша для сортировки имен.

Порядок2: =xlAscending , the заказать для сокращение имен .

В результате мы видим имена в ряды 7, 8 и 9 сейчас по алфавиту отсортированный в по возрастанию порядок.

На следующем снимке экрана мы изменили значение из Параметр Order2 на сортировать сайт имена в по убывающей порядок.

Читать далее: Как отсортировать несколько столбцов в Excel (5 быстрых подходов)

3. Двойной щелчок на заголовке для сортировки диапазона столбцов в Excel VBA

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

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1:C8").Sort Key1:=KeyRange, Header:=xlYes End If End Sub End Sub 

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

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

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

  • Как добавить кнопку сортировки в Excel (7 способов)
  • Сортировка уникального списка в Excel (10 полезных методов)
  • Как использовать функцию сортировки в Excel VBA (8 подходящих примеров)
  • Сортировка дубликатов в Excel (столбцы и строки)
  • Случайная сортировка в Excel (формулы + VBA)

4. Сортировка диапазона столбцов на основе цвета фона с помощью Excel VBA

Мы можем отсортировать диапазон ячеек в столбце на основе на их цвет фона Для этого нам необходимо добавить a параметр под названием SortOn которая имеет значение xlSortOnCellColor Чтобы продемонстрировать сортировку, мы сначала установили различные цвета фона в ряды наших набор данных .

Затем в редакторе кода visual basic копия следующий код и нажмите F5 чтобы запустить его.

 Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("background").Sort .SetRange Range("B4:D10") .Apply End With End Sub 

На следующем снимке экрана мы можем видеть отсортированный набор данных на основе их фонового цвета.

Объяснение:

  • В этом примере мы назвали рабочий лист " фон ". Итак, в коде мы помещаем " фон " как наш имя активного рабочего листа.
  • Мы установили B4 как ключ и B4:D10 как ассортимент Код будет сортировать данные на основе ключа.
  • Поскольку мы не указали параметр заголовка , код выполняется по умолчанию без заголовка.
  • Мы установили заказать параметр как восходящий, поэтому он сортирует данные от меньших значений к большим. .

Читать далее: Как отсортировать по цвету в Excel (4 критерия)

5. Применение кода VBA для сортировки диапазона столбцов на основе цвета шрифта

Применяя код VBA, мы можем отсортировать наш набор данных на основе их цвет шрифта Во-первых, нам нужно окрашивать разные ряды для иллюстрации примера.

Примените приведенный ниже код для сортировки набора данных на основе цвет шрифта.

 Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub 

Объяснение:

  • В этом примере мы назвали рабочий лист " fontcolor ". Итак, в коде мы помещаем " fontcolor " как наш имя активного рабочего листа.
  • Мы установили B4 как ключ и B4:D11 как ассортимент Код будет сортировать данные на основе ключа.
  • В этом примере мы также указали параметр заголовка как xlYes .
  • Здесь мы устанавливаем заказать параметр как восходящий, поэтому он сортирует данные от меньших значений к большим. .
  • Значение SortOn параметр
  • Сайт параметр ориентации имеет значение xlTopToBottom так как это является обязательным.
  • Цвет для сортировки в терминах RGB, который имеет значение от 0 на 255 .

Читать далее: Как отсортировать два столбца в Excel по совпадению (точное и частичное совпадение)

6. Изменение ориентации диапазона сортировки с помощью Excel VBA

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

Давайте поместим следующий код в редактор visual basic и нажмем F5, чтобы запустить его.

 Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub 

Здесь мы отсортировано данные, основанные на возрастной ряд в по возрастанию заказ слева на правильно В коде мы устанавливаем ориентация параметр как xlSortRows .

Связанный контент: Как автоматически сортировать несколько столбцов в Excel (3 способа)

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

  • Сайт Параметр SortOn что мы использовали для сортировать диапазон столбцов на основе цвет фона и цвет шрифта может быть использован только объект рабочего листа Мы не можем использовать его с объект диапазона .
  • Сайт Событие BeforeDoubleClick сортирует данные только в восходящий.

Заключение

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

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