Самоучитель VBA

       

Метод Sort


Сортировка позволяет выстраивать данные в лексикографическом порядке по возрастанию или убыванию. Метод Sort осуществляет сортировку строк списков и баз данных, а также столбцов рабочих листов с учетом до трех критериев, по которым производится сортировка. Сортировка данных вручную совершается с использованием команды Данные, Сортировка (Data, Sort). .

Синтаксис:

Объект.Sort(keyl, orderl, key2, order2, key3, order3, header, orderCus-tom,

matchCase, orientation)

Аргументы:



Объект

Диапазон, который будет сортироваться

keyl

Ссылка на первое упорядочиваемое поле

orderl

Задает порядок упорядочивания. Допустимые значения:

  • xlAscending (возрастающий порядок)

    xlDescending (убывающий порядок)

  • key2

    Ссылка на второе упорядочиваемое поле

    order2

    Задает порядок упорядочивания. Допустимые значения:

  • xlAscending (возрастающий порядок)

    xlDescending (убывающий порядок)

  • key3

    Ссылка на второе упорядочиваемое поле

    order3

    Задает порядок упорядочивания. Допустимые значения:

  • xlAscending (возрастающий порядок),

    xlDescending (убывающий Порядок)

  • header

    Допустимые значения:

  • xlYes (первая строка диапазона содержит заголовок, который не сортируется)

  • xiNo (первая строка диапазона не содержит заголовок, по умолчанию считается данное значение)

    xlGuess (Excel решает, имеется ли заголовок)

  • orderCustom

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

    используется Normal

    matchCase

    Допустимые значения: True (учитываются регистры) и False (регистры не учитываются)

    orientation

    Допустимые значения: О xlTopToBottom (сортировка осуществляется сверху вниз, т. е. по строкам), П xlLeftToRight (слева направо, т. е. по столбцам)

    Например, диапазон А1:С20 рабочего листа лист! сортируется следующей командой в порядке возрастания так, что первоначальная сортировка происходит по первому столбцу этого диапазона, а второстепенная — по второму.

    Worksheets("Лист").Range("Al:C20").Sort keyl:=Worksheets("Sheetl").Range("Al"), key2:=Worksheets("Sheetl").Range("Bl")



    Приведем соответствие между аргументами метода Sort и сортировкой данных на рабочем листе вручную при помощи команды Данные, Сортировка (Data, Sort).



    Шаг 1



    Выделяем диапазон A1:G13, содержащий записи базы данных о туристах, которые должны быть отсортированы (рис. 3.17). В методе Sort за диапазон с записями, подлежащими сортировке, отвечает объект, к которому применяется метод. В данном случае метод sort надо применить к диапазону Range ("A1 :G13") .



    Рис. 3.17. Сортируемые списки



    Шаг 2



    Выберем команду Данные, Сортировка (Data, Sort). В результате появится диалоговое окно Сортировка диапазона (Sort) (рис. 3.18).







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

  • Выбор в списках Сортировать по (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") . Порядок сортировки по первому критерию устанавливается аргументом Orderi. В данном случае сортируем по возрастанию, поэтому аргументу Order1присваиваем xlAscending. Вторичная сортировка происходит по полю Оплачено по возрастанию, поэтому аргументам key2 и Order2 присваиваем Range ("E2") и xiAscending соответственно. Переменной, отвечающей за идентификацию полей, является Header. В данном случае в группе Идентифицировать поля по (My list has) выбран переключатель подписям (первая строка диапазона) (Header row), поэтому переменной Header присвоим значение xiYes. Таким образом, имеем:

    Range ( "Al : G13 " ) . Sort Key1i : =Range ("02") , Order1 : =xlAscending, Key2:=Range("E2") , Order2:=xlAscending, Header:= xlYes



  • ШагЗ



    Нажатие кнопки OK приведет к сортировке записей по указанным критериям (рис. 3.19).



    Рис. 3.18. Диалоговое окно Сортировка диапазона



    Рис. 3.19. Результат сортировки




    Содержание раздела