
VBA Excel: сортировка таблицы (диапазона)

Синтаксис сортировки
Синтаксис полного кода Excel VBA, используемого для сортировки данных в таблицах и диапазонах, следующий:
1 2 3 4 5 6 7 8 9 | С Expression.Sort .SortFields.Clear .SortFields.Add Key, SortOn, Order, DataOption .SetRange [Range] .Header = [xlGuess, xlYes, xlNo] .MatchCase = [True, False] .Orientation = [xlTopLeBottom], [xlTopLeBottom],[ xlTopLeBottom], xlToBottom Применить финиш с помощью |
Синтаксис шорткода Excel VBA, используемого для сортировки данных с параметрами по умолчанию, следующий:
1 2 3 4 5 6 | С помощью Expression.Sort .SortFields.Clear .SortFields.Add Key .SetRange [Range] .Apply End With |
Выражение — это выражение, которое возвращает объект листа, например:
1 2 3 4 | Рабочие листы ActiveSheet («Sheet1») ActiveWorkbook Worksheets («Sheet1») Рабочие книги («Book1.xlsm») Рабочие листы («Sheet1») |
Расшифровка кода
1. Expression.Sort: метод Sort объекта Worksheet возвращает объект Sort.
Объект Sort — это объект, который представляет сортировку диапазона данных.
2.SortFields.Clear: метод SortFields объекта Sort возвращает коллекцию объектов SortFields. Метод Clear объекта SortFields удаляет все существующие объекты SortField.
Объект SortField содержит всю информацию о сортировке для данного рабочего листа.
3.SortFields.Add Key, SortOn, Order, DataOption: метод Add объекта SortFields создает и возвращает новый экземпляр объекта SortField с указанными параметрами.
Параметры метода Add объекта SortFields:
Ключ — это обязательный параметр, указывающий значение ключа для сортировки. Тип данных — Интервал. Обычно вы указываете первую ячейку столбца при сортировке по строкам или первую ячейку строки при сортировке по столбцам. Диапазон будет отсортирован по данным столбца (строки), первая ячейка которого указана в качестве ключа.
SortOn — необязательный параметр, указывающий порядок сортировки (в зависимости от свойства ячейки, для которого выполняется сортировка).
Значения, которые может принимать SortOn:
Постоянный | Имея в виду | Описание |
---|---|---|
Сортировать по значениям | 0 | сортировать по значению (по умолчанию) |
Сортировка по цвету ячеек | 1 | сортировать по цвету ячейки |
Сортировать по цвету шрифта | 2 | сортировать по цвету шрифта |
Заказать по иконке | 3 | сортировать по иконке* |
* Иконки (значки) могут быть назначены ячейкам при условном форматировании диапазона.
Порядок — это необязательный параметр, определяющий порядок сортировки (по возрастанию или по убыванию).
Ценности, которые может принимать Орден:
Постоянный | Имея в виду | Описание |
---|---|---|
xlAscendent | 1 | порядок сортировки по возрастанию (по умолчанию) |
xl Потомок | 2 | в порядке убывания |
DataOption — это необязательный параметр, определяющий способ сортировки текста.
Значения, которые может принимать DataOption:
Постоянный | Имея в виду | Описание |
---|---|---|
xlSortNormal | 0 | числовые и текстовые данные, отсортированные отдельно (по умолчанию) |
xl SortTextAsNumbers | 1 | текстовые данные обрабатываются как числовые для сортировки |
4.SetRange [Range] — Метод SetRange объекта Sort устанавливает диапазон (таблицу), в котором выполняется сортировка.
5.Header = [xlGuess, xlYes, xlNo] — свойство Header объекта Sort указывает, является ли первая строка таблицы строкой заголовка (заголовка).
Значения, которые может принимать свойство Header:
Постоянный | Имея в виду | Описание |
---|---|---|
xlGuess | 0 | Excel определяет, есть ли строка заголовка |
xl Да | 1 | есть строка заголовка, порядок сортировки на нее не влияет |
xlNo | 2 | нет строки заголовка (по умолчанию) |
6.MatchCase = [True, False] — Свойство MatchCase объекта Sort указывает, как выполнять сортировку с учетом регистра.
Значения, которые может принимать свойство MatchCase:
Постоянный | Имея в виду | Описание |
---|---|---|
Ложь | 0 | прописные / строчные (по умолчанию) |
Правда | 1 | сортировка с учетом регистра |
7.Orientation = [xlTopToBottom, xlLeftToRight] — свойство Orientation объекта Sort задает ориентацию для сортировки.
Значения, которые может принимать свойство Orientation:
Постоянный | Имея в виду | Описание |
---|---|---|
xlTopToBottom | 1 | сортировать по наличию (по умолчанию) |
xl слева направо | 2 | сортировать по столбцам |
8. Применить — метод Применить объекта Сортировка сортирует диапазон на основе примененных параметров.
Примеры сортировки
Таблица для примеров
Сортировка по одному столбцу
Краткое описание кода Excel VBA для сортировки диапазона на основе первого столбца с параметрами по умолчанию:
1 2 3 4 5 6 7 8 | Sub Primer1 () с ActiveSheet.Sort .SortFields.Clear .SortFields.Add Key: = Range («A2») .SetRange Range («A2: C7»). Применить End with End Sub |
Полная запись, но также с параметрами по умолчанию:
1 2 3 4 5 6 7 8 9 10 11 | Sub Primer2 () с ActiveSheet.Sort .SortFields.Clear .SortFields.Add Key: = Range («A2»), SortOn: = xlSortOnValues, Order: = xlAscending, DataOption: = xlSortNormal .SetRange Range («A2: C7») .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .Apply End with End Sub |
Сортировать результат:
Сортировка по двум столбцам
Код Excel VBA для сортировки исходной таблицы на основе первого и второго столбца с параметрами по умолчанию:
1 2 3 4 5 6 7 8 9 | Sub Primer3 () с ActiveSheet.Sort .SortFields.Clear .SortFields.Add Key: = Range («A2») .SortFields.Add Key: = Range («B2») .SetRange Range («A2: C7»). Применить Конец с помощью End Sub |
Сортировать результат:
Сортировка второго столбца (добавление еще одного SortField) не нарушает сортировку первого: только ячейки с одинаковым значением меняются местами в первом столбце.