Оглавление
Знание того, как сортировать диапазон с помощью 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. Надеемся, что это поможет вам использовать его более уверенно. Любые вопросы или предложения не забудьте оставить в поле для комментариев ниже.