Шаг 37.
VBA в MSExcel.
Методы объекта Range, использующие команды Excel. Метод Sort
На этом шаге мы рассмотрим параметры этого метода и пример его использования.
Сортировка позволяет выстраивать данные в лексикографическом порядке по возрастанию или убыванию. Метод Sort осуществляет сортировку
строк списков и баз данных, а также столбцов рабочих листов с учетом до трех критериев, по которым производится сортировка. Сортировка данных
вручную совершается с использованием команды Данные | Сортировка (Data | Sort).
Синтаксис:
Объект.Sort(key1, order1, key2, order2, key3, order3, header, orderCustom, _
matchCase, orientation)
Аргументы:
Таблица 1. Аргументы метода Sort
Аргумент |
Назначение |
Объект |
Диапазон, который будет сортироваться |
key1 |
Ссылка на первое упорядочиваемое поле |
order1 |
Задает порядок упорядочивания. Допустимые значения:
- xlAscending (возрастающий порядок);
- xlDescending (убывающий порядок).
|
key2 |
Ссылка на второе упорядочиваемое поле |
order2 |
Задает порядок упорядочивания. Допустимые значения:
- xlAscending (возрастающий порядок);
- xlDescending (убывающий порядок).
|
key3 |
Ссылка на третье упорядочиваемое поле |
order3 |
Задает порядок упорядочивания. Допустимые значения:
- xlAscending (возрастающий порядок);
- xlDescending (убывающий порядок).
|
header |
Допустимые значения:
- xlYes (первая строка диапазона содержит заголовок, который не сортируется);
- xlNo (первая строка диапазона не содержит заголовок, по умолчанию считается данное значение);
- xlGuess (Excel решает, имеется ли заголовок).
|
orderCustom |
Пользовательский порядок сортировки. По умолчанию используется Normal |
matchCase |
Допустимые значения: True (учитывается регистр) и False (регистр не учитывается) |
orientation |
Допустимые значения:
- xlTopToBottom (сортировка осуществляется сверху вниз, т.е. по строкам);
- xlLeftToRight (слева направо, т.е. по столбцам).
|
Например, диапазон А1:С20 рабочего листа Лист1 сортируется следующей командой в порядке возрастания так, что первоначальная
сортировка происходит по первому столбцу этого диапазона, а второстепенная — по второму.
Worksheets("Лист1").Range("Al:C20").Sort _
key1:=Worksheets("Лист1").Range("Al"), _
key2:=Worksheets("Лист1").Range("B1")
Приведем соответствие между аргументами метода Sort и сортировкой данных на рабочем листе вручную при помощи команды
Данные | Сортировка (Data | Sort).
- Выделяем диапазон A1:G13, содержащий записи базы данных о туристах, которые должны быть отсортированы (рисунок 1).
Рис.1. Сортируемый список
В методе Sort за диапазон с записями, подлежащими сортировке, отвечает объект, к которому применяется метод. В данном случае метод Sort
надо применить к диапазону Range("A1:G13").
- Выберем команду Данные | Сортировка (Data | Sort). В результате появится диалоговое окно
Сортировка диапазона (Sort) (рисунок 2).
Рис.2. Диалоговое окно Сортировка диапазона
Используя это окно, можно установить до трех критериев, по которым производится сортировка.
- Выбор в списках Сортировать по (Sort by), Затем по (Then by) и В последнюю очередь, по (Then by)
определяют поля, используемые для фильтрации списка.
- Переключатели по возрастанию (Ascending) и по убыванию (Descending), расположенные
рядом с каждым раскрывающимся списком, определяют порядок сортировки.
- Записи для идентификации полей, выводимые в раскрывающихся списках, определяются группой Идентифицировать диапазон данных по
(My list has). Если в этой группе выбран переключатель подписям (первая строка диапазона) (Header row), то в
раскрывающихся списках выводятся тексты из первых строк диапазонов. Если выбран переключатель обозначениям столбцов листа (No header row),
то выводятся названия столбцов.
Например, отсортируем базу данных о туристах в порядке возрастания полей, выбранных в качестве критериев сортировки, установив первоначальным
критерием поле Направление тура, вторичным — Оплачено. Сортировку по третьему критерию производить не будем.
Так как был выбран диапазон A1:G13, содержащий названия полей, то для идентификации полей выберем в группе
Идентифицировать поля по (My list has) переключатель подписям (первая строка диапазона) (Header row).
В методе Sort за выбор поля, по которому производится первоначальная сортировка, отвечает аргумент key1. В данном случае для
выбора поля Направление тура аргументу key1 надо присвоить значение Range ("D2"). Порядок сортировки по
первому критерию устанавливается аргументом order1. В данном случае сортируем по возрастанию, поэтому аргументу order1 присваиваем
xlAscending. Вторичная сортировка происходит по полю Оплачено по возрастанию, поэтому аргументам key2 и order2
присваиваем Range ("E2") и xlAscending соответственно. Параметром, отвечающим за идентификацию полей, является header.
В данном случае в группе Идентифицировать поля по (My list has) выбран переключатель подписям (первая строка диапазона)
(Header row), поэтому параметру header присвоим значение xlYes. Таким образом, имеем:
Range ("Al:G13").Sort key1:=Range ("D2"), _
order1:=xlAscending, key2:=Range("E2") , _
order2:=xlAscending, header:= xlYes
- Нажатие кнопки OK приведет к сортировке записей по указанным критериям (рисунок 3).
Рис.3. Результат сортировки
На следующем шаге мы рассмотрим метод Subtotal.
Предыдущий шаг
Содержание
Следующий шаг