Сортировка данных в таблице в электронной таблице Excel с помощью VBA. Sort и SortField, объекты и методы. Примеры сортировки данных в диапазон.
Синтаксис сортировки
Синтаксис полного кода 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 = [xlTopToBottom, xlLeftToRight] .Применить Конец с |
Сокращенный синтаксис Excel VBA для сортировки данных с параметрами по умолчанию:
1 2 3 4 5 6 | С Expression.Sort .SortFields.Clear .SortFields.Add Key .SetRange [Range].Apply End With |
Выражение — это выражение, которое возвращает объект Worksheet, например:
1 2 3 4 | Рабочие листы ActiveSheet («Лист1») ActiveWorkbook.Worksheets («Лист1») Workbooks («Book1.xlsm»). Рабочие листы («Лист1») |
Расшифровка кода
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 | сортировать по значению (по умолчанию) |
SortOnCellColor | а | сортировать по цвету ячейки |
Сортировать по цвету шрифта | два | сортировать по цвету шрифта |
СортИнИкон | 3 | сортировать по иконке* |
* Иконки (значки) можно давать ячейкам при условном форматировании диапазона.
Порядок — необязательный параметр, определяющий порядок сортировки (по возрастанию или по убыванию).
Значения, которые может принимать Орден:
Постоянный | Смысл | Описание |
---|---|---|
кслАсцендент | а | в порядке возрастания (по умолчанию) |
xlПо убыванию | два | в порядке убывания |
DataOption — необязательный параметр, указывающий способ сортировки текста.
Значения, которые может принимать DataOption:
Постоянный | Смысл | Описание |
---|---|---|
кслсортнормальный | 0 | числовые и текстовые данные сортируются отдельно (по умолчанию) |
кслсорттекстаснумберс | а | текстовые данные обрабатываются как числовые для классификации |
4.SetRange [Диапазон]: метод SetRange объекта Sort задает диапазон (таблицу), в котором выполняется сортировка.
5.Header = [xlGuess, xlYes, xlNo] — свойство Header объекта Sort указывает, является ли первая строка таблицы строкой заголовка).
Значения, которые может принимать свойство Header:
Постоянный | Смысл | Описание |
---|---|---|
угадай xl | 0 | Excel сам определяет, есть ли строка заголовка |
xlДа | а | есть строка заголовка, сортировка на нее не влияет |
xL Нет | два | нет строки заголовка (по умолчанию) |
6.MatchCase = [True, False]: свойство MatchCase объекта Sort указывает, насколько регистрозависимой должна быть сортировка.
Значения, которые может принимать свойство MatchCase:
Постоянный | Смысл | Описание |
---|---|---|
Подделка | 0 | с учетом регистра (по умолчанию) |
Определенный | а | сортировка с учетом регистра |
7.Orientation = [xlTopToBottom, xlLeftTORight]: свойство Orientation объекта Sort определяет ориентацию сортировки.
Значения, которые может принимать свойство Orientation:
Постоянный | Смысл | Описание |
---|---|---|
xlСверху вниз | а | сортировать по действиям (по умолчанию) |
xlСлева направо | два | сортировать по столбцам |
8.Apply: метод Apply объекта Sort сортирует диапазон на основе примененных параметров.
Примеры сортировки
Таблица для примеров
Сортировка по одному столбцу
Ярлык кода 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») .Apply 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») .Apply Конец с End Sub |
Сортировать результат:
Применение сортировки ко второму столбцу (добавление еще одного объекта SortField) не нарушает сортировку первого: в первом столбце меняются местами только ячейки с одинаковыми значениями.