Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel sort

Vba excel sort

На этом шаге мы рассмотрим параметры этого метода и пример его использования.

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

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

Приведем соответствие между аргументами метода 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. Таким образом, имеем:

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

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

На следующем шаге мы рассмотрим метод Subtotal.

Методы объекта Range, использующие команды Excel

В данном разделе рассматриваются методы, использующие встроенные в Excel команды. Эти методы позволяют эффективно работать с диапазоном: заполнять его элементами по образцу, сортировать, фильтровать и консолидировать данные, строить итоговую таблицу и создавать сценарии, решать нелинейное уравнение с одной неизвестной.

Метод DataSeries (прогрессия) создает профессии. Вручную метод DataSeries выполняется с помощью команды Правка, Заполнить, Прогрессия (Edit, Fill, Series).

Объект.DataSeries(rowcol, type, date, step, stop, trend)

Диапазон с начальными данными прогрессии. Метод DataSeries позволяет одновременно строить несколько однотипных профессий с одинаковым шагом, но различными начальными элементами

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

Определяет тип прогрессии. Допустимые значения:

Определяет тип последовательности дат, если параметр type принимает значение xlChronological. Допустимые значения:

Шаг изменения прогрессии. По умолчанию 1

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

Допустимые значения: True (создается арифметическая или геометрическая прогрессия) или False (создается список)

Приведем соответствие между аргументами метода DataSeries и построением последовательности на рабочем листе командой Правка, Заполнить, Прогрессия (Edit, Fill, Series) на примере построения геометрической профессии.

О В ячейку AI вводим первый член прогрессии, например 1. В методе DataSeries за начальное значение прогрессии отвечает объект, к которому применяется метод. В данном случае метод DataSeries надо применить к диапазону Range («A1») . О Выберите команду Правка, Заполнить, Прогрессия (Edit, Fill, Series), которая приведет к появлению диалогового окна Прогрессия (Series) (рис. 3.1).

В диалоговом окне Прогрессия (Series) в группе Расположение (Series in) выберите, например, переключатель по строкам (Rows), т. к. будем строить геометрическую профессию в первой строке. В группе Тип (Туре) выберите переключатель геометрическая (Growth) В поле Шаг введите например, 1.2, а в поле Предельное значение (Stop value) — 3, т. е. геометрическая прогрессия будет строиться с шагом 1.2 до тех пор, пока ее члены не достигнут значения 3. Нажатие кнопки ОК приводит к построению требуемой профессии (рис. 3.2). В методе DataSeries за расположение профессии отвечает аргумент rowcoi. В данном случае ему надо присвоить значение xiRows. За тип прогрессии отвечает аргумент type, которому присвоим значение xiGrowth. За шаг и предельное значение отвечают аргументы step и stop, которым присвоим 1.2 и з соответственно. Таким образом, имеем:

Range ( «А1» ). DataSeries Rowcol : =xlRows , Type : =xlGrowth, Step:=1.2, Stop:=3

Рис. З.2. Результат построения геометрической прогрессии

Метод AutoFill (автозаполнение) автоматически заполняет ячейки диапазона элементами последовательности. Метод AutoFill отличается от метода DataSeries тем, что явно указывается диапазон, в котором будет располагаться прогрессия. Вручную этот метод эквивалентен расположению указателя мыши на маркере заполнения выделенного диапазона (в который введены значения, порождающие создаваемую последовательность) и протаскивании маркера заполнения вдоль диапазона, в котором будет располагаться создаваемая последовательность.

Диапазон, с которого начинается заполнение

Диапазон, который заполняется

Допустимые значения: xiFiilDefauit, xlFillSeries, xlFillCopy, xlFillFormats, xlFillValues, xlFillDays, xlFillWeekdays, xlFillMonths, xlFillYears, xlLinearTrend, xlGrowthTrend. По умолчанию xlFillDefault

Приведем соответствие между аргументами метода AutoFill и построением последовательности на рабочем листе вручную на примере построения арифметической прогрессии по двум ее первым членам.

В ячейку AI введите первый член профессии, например 5. В ячейку А2 введите второй член профессии, например 7. Выделите диапазон А1:А2, содержащий два первых члена арифметической профессии. Расположите указатель мыши над маркером заполнения выделенного диапазона так, чтобы он превратился в черный крест (рис. 3.3).

Рис. 3.3. Выделение двух первых членов прогрессии

При нажатой левой кнопке мыши, протащите маркер заполнения вниз по столбцу так, чтобы создать требуемую последовательность. В данном случае протащим маркер заполнения так, чтобы создать последовательность в диапазоне А1:А5 (рис. 3.4). Тот же результат получается, если аргументу Destination метода AutoFill присваивается Range («Ai:A5»), аргументу туре присваивается xiFiiiDefauit, а метод применяется к диапазону Range («A1:A2») . Таким образом, имеем:

Range ( «Al :A2») .AutoFill

Destination: =Range ( «Al : A5» ),_

Type : =xlFillDef ault

Метод AutoFilter (автофильтр) представляет собой простой способ запроса и фильтрации данных на рабочем листе. Если AutoFilter активизирован, то каждый заголовок поля выделенного диапазона данных превращается в поле с раскрывающимся списком. Выбирая запрос на вывод данных в поле с раскрывающимся списком, вы осуществляете вывод только тех записей, которые удовлетворяют указанным условиям. Поле с раскрывающимся списком содержит следующие типы условий: Все (АИ), Первые десять (Тор 10), Условие (Custom), конкретный элемент данных, Пустые (Blanks) и Непустые (NohBlanks). Вручную метод запускается посредством выбора команды Данные, Фильтр, Автофильтр (Data, Filter, AutoFilter).

При применении метода AutoFilter допустимы два синтаксиса.

В этом случае метод AutoFilter выбирает или отменяет команду Данные, Фильтр, Автофильтр (Data, Filter, AutoFilter), примененную к диапазону, заданному в аргументе объект.

Объект.AutoFilter(field, criterial, operator, criteria2)

В этом случае метод AutoFilter выполняет команду Данные, Фильтр, Автофильтр (Data, Filter, AutoFilter) по критериям, указанным в аргументе.

Целое, указывающее поле, в котором производится фильтрация данных

criterial И criteria2

Задают два возможных условия фильтрации поля. Допускается использование строковой постоянной, например 101, и знаков отношений >, =,

Допустимые значения: П xiAnd (логическое объединение первого и второго критериев) П xior (логическое сложение первого и второго критериев) П xiTopioitems (для показа первых десяти элементов поля)

При работе с фильтрами полезны метод ShowAllData и свойства FilterMode и AutoFilterMode.

Показывает все отфильтрованные и неотфильтрованные строки рабочего листа

Допустимые значения: True (если на рабочем листе имеются отфильтрованные данные со скрытыми строками), False (в противном случае)

Допустимые значения: True (если на рабочем листе выведены раскрывающиеся списки метода AutoFilter), False (в противном случае)

Приведем соответствие между аргументами метода AutoFilter и выполнением команды Данные, Фильтр, Автофильтр (Data, Filter, AutoFilter) при фильтрации базы данных регистрации туристов.

Выделяем диапазон A1 = E1, содержащий заголовки полей базы данных. Выберем команду Данные, Фильтр, Автофильтр (Data, Filter, AutoFilter). В результате в заголовках полей появятся раскрывающиеся списки (рис. 3.5). В этих раскрывающихся списках предлагаются варианты допустимой фильтрации. В методе AutoFilter за диапазон с названиями полей отвечает объект, к которому применяется метод. В данном случае метод

AutoFilter надо Применить к диапазону Range («A1: E1») .

Рис. 3.5. Раскрывающиеся списки метода AutoFilter

Отфильтруем в базе данных, например, только данные о клиентах, направляющихся в афины (рис. 3.6). С этой целью в раскрывающемся списке поля Направление тура выберем Афины. В результате на рабочем листе будут выведены только записи, соответствующие турам в Афины. В методе AutoFilter за выбор поля, в котором производится фильтрация, отвечает аргумент

Field. В данном Случае для выбора поля Направление тура

аргументу Field надо присвоить значение 4. За критерии, покоторым производится фильтрация, отвечают аргументы criteria1 и criteria2. В данном случае фильтрация производилась по одному критерию — АФИНЫ, поэтому только аргументу criterial надо присвоить значение АФИНЫ. Таким образом, имеем:

Range ( «Al : El » ) . Select Selection. AutoFilte r Selection. AutoFilter Field:=4, Criteria1 : =»Афины»

Рис. 3.6. Фильтрация списка по критерию Афины

Рис. 3.7. Диалоговое окно Пользовательский автофильтр

При фильтрации по условию появляется диалоговое окно Пользовательский автофильтр (Custom AutoFilter), позволяющее отфильтровать записи по двум критериям в одном поле (рис. 3.7). Например, отфильтруем все туры в Афины и Берлин. В методе AutoFilter это соответствует присвоению аргументам Сriterial и criteria2 значений Афины и Берлин соответственно, а аргументу operator — значения хlor, т. к. будут отображаться либо туры в Афины, либо в Берлин .

Таким образом, имеем:

Range («A1:E1») .Select Select ion. AutoFilter Selection. AutoFilter Field:=4,

Criterial : =»=Афины» , Operator : =xlOr ,

Метод AdvancedFilter (расширенный фильтр) является более мощным и универсальным средством фильтрации, чем метод AutoFilter. Он позволяет использовать фильтрацию по большему числу критериев, причем допустимо применение критериев, включающих формулы. Кроме того, метод AdvancedFilter позволяет фильтровать список с выводом результата фильтрации как непосредственно на том месте, где он расположен, так и в новое специфицированное место. Вручную метод запускается посредством выбора команды Данные, Фильтр, Расширенный фильтр (Data, Filter, Advanced Filter).

Объект.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)

Допустимые значения:: xiFilterinPiace (фильтровать список на месте) и xiFiiterCopy (скопировать результат на новое место)

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

Если параметр Action принимает значение xiFiiter-сору, то он указывает диапазон, куда будет копироваться результат фильтрации

Допустимые значения True (отбирается только один вариант записи из многократно встречающихся в списке) и False (отбираются все встречающиеся записи)

Приведем соответствие между аргументами метода Advanced Filter и выполнением команды Данные, Фильтр, Расширенный фильтр (Data, Filter, Advanced Filter) при фильтрации базы данных регистрации туристов.

Выделяем диапазон AI : G13, содержащий фильтруемую базу данных. (рис. 3.8). Прежде чем выбирать команду Данные, Фильтр, Расширенный фильтр (Data, Filter, Advanced Filter), необходимовыполнить предварительные построения по созданию диапазона критериев. Верхняя строка диапазона критериев должна содержать заголовки полей фильтруемых данных. При этом нет необходимости включать все заголовки и сохранять их порядок. В диапазон критериев также должны входить строки с условиями фильтрации. Все условия в диапазоне критериев, записанные под заголовком поля, относятся к этому полю. При применении расширенного фильтра допустима запись нескольких условий в строке диапазона критериев. Условия, расположенные в одной строке, рассматриваются как условия, объединенные логической операцией и (And) , а расположенные в нескольких — логической операцией или (Or) В данном случае под диапазон критериев отведем диапазон A16:G17. В базе данных выберем записи обо всех мужчинах, которые едут в Лондон. С этой целью в ячейку С17 диапазона критериев введем значение муж, а в ячейку D17— Лондон.

Выберем команду Данные, Фильтр, Расширенный фильтр (Data, Filter, Advanced Filter). Появится диалоговое окно Расширенный фильтр (Advanced Filter) (рис. 3.9).

Range ( «A1 : G13» ) .AdvancedFiiter

CriteriaRange : =Range («A16:G17» ) ,

CopyToRange : =Range ( » Al 9 : Gl 9 » ) , Unique : =False

VBA Sort Range

Excel VBA Sort Range

Sorting a range in VBA is done by range.sort method, it is a property of the range method with which a user can sort a range in order, the arguments for this function are the Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3, all the arguments for this function are optional.

As part of the data organizing or data structuring, it is important to sort the data and make it organized. A similar thing is available with VBA as well, so common question about new learners of VBA is how we can make use of this sort option as part of VBA automation and this article guides you through the VBA Sort range in detail.

With excel we all are familiar with the option of the sort which is available under the DATA tab.

Sort Option in VBA

To use sort option, first we need to decide what our data range is and mention the same data range by using RANGE object in VBA, then only we can access the “Sort” option in VBA. For example, assume my data range is from A1 to D10 then we can provide the data range as follows.

Code:

Now put a dot and select the “SORT” method.

Code:

Below is the syntax of the SORT method of range, though syntax has different arguments we don’t need all of them for our VBA coding, so we need only a few elements.

[Key1]: In the data range that we are sorting we need to specify which column we need to sort. For example in the data range of A1: D10 if we want to sort the data based on column B then [Key1] will be Range(“B1”).

[Order1]: The mentioned column in the [Key1] argument should be sort in what order. We can choose two options here “xlAscending” or “xlDescending”.

Header: The mentioned data range has headers or not, if yes we can supply “xlYes” or else we can supply “xlNo”.

Example of Sort Range in VBA

Let’s take the example of excel VBA sort range to understand this in a better manner.

For example, look at the below data structure.

We have data from A1 to E17, so first we will sort the data based on “Country-wise”. Follow the below steps to write the code to sort the data.

Step 1: Start the macro procedure.

Code:

Step 2: First mention the data range by using RANGE object.

Code:

Step 3: Now choose “Sort” method of the Range object.

Code:

Step 4: Since we are sorting the data based on “Country-wise” our Key 1 argument column will be Range (“B1”).

Code:

Step 5: Once the required column is mentioned we need to mention in what order we need to sort the data and “Order1” will be “xlAscending” order.

Code:

Step 6: Our data has headers so Header will be “xlYes”.

Code:

We have mentioned all the elements which are required to sort the data. Execute the code by pressing the F5 function and key and see the result.

Output:

Data has been sorted based on Country names in the order of A to Z.

Now assume we need to sort the data based on Country-wise also we need to sort the “Gross Sales” from highest to lowest. In such cases, we need to make use of Key2 and Order2 arguments as well.

After mentioning Key1 & Order1, let’s choose Key2.

Code:

Since we are sorting the data based on the “Gross Sales” column our Key2 column name will be Range(“D1”).

Code:

Once the Key2 is specified we need to decide on the sorting patter of whether it is ascending order or descending order in Order2 argument since we are sorting the sales value from largest to smallest we can choose “xlDescending” order.

Code:

After that mention the Header argument as “xlYes”. Now run the code and see what happens.

Output:

Previously it has sorted based only on “Country-wise” but this time it has sorted based on “Country-wise” first and then also on “Gross Sales” from highest to lowest.

Like this, we can use the “Sort” method in VBA to organize the data.

Things to Remember about Excel VBA Sort Range

  • The sort is a method available in VBA and to access this method we need to specify what the range of cells we are going to sort.
  • If the data range includes headers then we need to choose the header option as “xlYes”, if not we can choose “xlNo”.

Recommended Articles

This has been a guide to VBA Sort Range. Here we discuss how to sort range using the specific column in VBA along with excel example and downloadable excel templates. You may also look at these useful functions in excel –

Сортировка диапазона

Процедура для сортировки диапазона по любому количеству ключевых полей (строк или столбцов).

sh — лист, на котором происходит сортировка. Если это текущий лист, то укажите ActiveSheet.
fisrt_row, first_col — координаты первой ячейки (в верхнем левом углу диапазона)
last_row, last_col — координаты последней ячейки (в нижнем правом углу диапазона)

Header — содержит ли диапазон заголовки? False/True
Column — сортировать по столбцам (True) или по строкам (False)?

fields — массив, содержащий номера столбцов или строк (в стиле нумерации R1C1) по которым происходит сортировка. Порядок следования в массиве отражает приоритет ключевого поля — сначала сортируется по первому указанному в массиве полю, потом по второму, затем по третьему и т.д. Игнорируются нули и нечисловые элементы, а также ключевые поля не содержащиеся в диапазоне. Дробные числа приводятся к целым.
Значения полей можно указывать отрицательными! В этом случае номер ключевого поля — модуль элемента, данное поле будет сортироваться по убыванию.

Теперь покажу, как это чудовище применяется. Допустим, есть диапазон 15 на 15, заполненный в случайном порядке нулями и единицами. Нужно отсортировать его в первую очередь по первому столбцу диапазона, потом по второму, потом по третьему и так до самого последнего столбца.

Чтобы было нагляднее, добавим строку и столбец с вертикальной и горизонтальной нумерациями. Теперь будет легко отследить, как именно отсортировался массив. Они не будут ключевыми полями, но при этом войдут в сортируемый диапазон.

Отсортируем по столбцам. Для этого заполним массив числами от 2 до 16 (номера столбцов на листе) и передадим этот массив в функцию. Укажем что диапазон с заголовками — таковые находятся в строке с нумерацией столбцов.

Как видите, в первом столбце диапазона (не забывайте, что первый столбец диапазона это не первый столбец листа) нули и единицы упорядочены. Это в свою очередь разбивает весь диапазон на два горизонтальных поддиапазона: обратите внимание в первой колонке на нули со 2-й строки по 6-ю и на единицы с 7-й по 16-ю. Оба поддиапазона фактически сортируются по следующему столбцу, в их пределах в следующем столбце тоже наблюдаем сортировку по нулям и единицам. Это в свою очередь разбивает поддиапазоны на ещё более мелкие поддиапазоны, которые сортируются по следующему столбцу и так далее. При этом по нумерации строк диапазона можно проверить, что в строках элементы находятся на своих местах.

Также стоит отметить, что хотя мы честно применили сортировку по всем 15 столбцам, на самом деле применилось только первые 7 или 8 из них. В дальнейшем сортировка по более старшим колонкам не имела значения, потому что там сортируемые поддиапазоны состояли всего из одной строки.

Отсортируем по строкам. Нам нужно отследить как перемешались столбцы, поэтому строку с нумерацией колонок мы как содержащую заголовки не указываем. А чтобы нам не путалась нумерация строк, мы не станем вносить первую колонку в сортируемый диапазон.

Итак, что мы видим, товарищи? Нули и единицы красиво выстраиваются в ряд, на каждой следующей строке словно в матрёшке начинаются вертикальные поддиапазоны поменьше, у которых в ряду тоже нули идут впереди единиц. Пользуясь нумерацией колонок, можете сравнить с оригиналом. Для проверки сравниваются нули/единицы не построчно, а «постолбцово».

Ну и на сладенькое покажу как сортировать по убыванию. Давайте отсортируем таким причудливым образом — если это нечётный по счёту столбец диапазона, то сортируем по убыванию, а если чётный — то по возрастанию.

Те столбцы, которые нужно сортировать по убыванию, мы заносили в массив ключевиков со знаком минус. Если внимательно проверите результат, то увидите что с каждой следующей колонкой направление сортировки меняется на противоположное.

EXCEL: SORTING WITH VBA

Although Excel has a macro recorder, the code it records for some common tasks, such as sorting, simply doesn’t work. An attendee at one of my Power Excel seminars needed to be able to sort a downloaded file by descending revenue within sector. He tried to record a macro to do this simple task, but the macro wouldn’t work on different-sized data sets.

Sorting used to be easy in VBA. You would specify up to three key fields and indicate if you wanted each field sorted ascending or descending. But following the release of Excel 2007, sorting became complicated. You can now sort by cell color, font color, or icon, and you’re allowed more than three levels. Yet even if you’re doing a simple “Sort by column F descending within column C ascending” sort, the macro recorder generates complicated code that could allow for sorting by color or icon. Unfortunately, that recorded code also remembers that you had 123 rows, even if you have more or less rows in the future. Let’s look at a way to use the old sort method in Excel 2007 or later versions.

CAVEATS FOR THE OLD SORT METHOD

The sort method used in this article doesn’t allowing sorting by color or by icon. Your data needs to have a single row of headers at the top. If there are titles above the headers, a blank row is needed between the titles and headers. For example, if you have titles in cells A1:A3, then row 4 needs to be completely blank. The same applies if you have boilerplate notes below the data—there has to be a completely blank row between the last row of data and the notes. And if you have some tables to the right of the data, you need one completely blank column between your data and the other tables.

In Figure 1, there is a blank row (row 4) between the titles and headings. A blank row 569 separates the main data set from some explanatory notes. A blank column H separates the main data set from a lookup table in columns I and J. And row 5 is the the single row of headings.

USING CURRENTREGION

When you choose a cell in any data set and click the sort buttons, Excel expands the selection to include the current region, which is all of the data surrounding the active cell in all four directions—it stops at any edge of the worksheet or any completely blank row or column. To see the current region, choose one cell in the data set and press Ctrl+*. In Figure 1, the current range is cells A5:G568. Putting the cursor on any one of those cells and pressing Ctrl+* will result in Excel selecting all the cells from A5 to G568.

In VBA macros, you can use the CurrentRegion property to expand a selection to include the current region. If you routinely have data that starts in A5:G5 but can be any number of rows tall, using Selection.CurrentRegion.Sort will sort all of the data starting at cell A5 and ending at column G in the last row with data.

TYPING THE MACRO

Press Alt+F11 to access the VBA Editor. If you have already recorded a macro, you can find the lines related to sorting and replace them with the code. If you plan on typing the macro without using the macro recorder, you can choose Insert, Module from the VBA menu.

In the macro (below and in Figure 2), each line ends with a space and an underscore. These two characters are known as a continuation character. The sorting method happens in a single line of code, but will be shown as six lines:

The first line, Sub SortMyReport() , gives the macro a name. If you want to assign the macro to an icon on the Quick Access Toolbar, find its name in the list of macros.

The second line, Range(“A5”).CurrentRegion.Sort , tells Excel that you want to select cell A5 and sort the current region.

Key1 identifies the column that will be the primary sort column. Order1 is the direction of the sort. Note that the choices are XLAscending or XLDescending—the first two characters in both are the letters X and L, not an X followed by the number 1.

Key2 is the column for the secondary sort. The macro uses the Revenue heading in cell F5 and specifies that Excel should sort descending. If you wanted to include a third sort level, you would add a new pair of lines specifying Key3 and Order3.

What if you need to do four, five, or six levels of sorting? You aren’t allowed to specify Key4. But you could have a macro that does two sorts. The first sort should be by fields 4, 5, and 6. The second sort should be by fields 1, 2, and 3.

The Header line tells Excel that you have a single row of headers. Excel usually guesses if your data has headers and frequently guesses wrong. Your choices for header are XLGuess, XLYes, or XLNo. Always specify either XLYes or XLNo since the guessing algorithm in VBA is just as likely to be wrong as in the Excel interface.

To assign a macro to an icon in the Quick Access Toolbar, follow these steps:

  1. Right-click the Quick Access Toolbar and choose Customize Quick Access Toolbar.
  2. From the top-left dropdown, select Macros. (It defaults to Popular Commands.)
  3. In the top-right dropdown, which defaults to For All Documents, select the option that indicates it’s for this particular workbook. For example, if the file was named XYZCompany.xlsx, the choice “For XYZCompany.xlsx” would be available.
  4. Select SortMyReport in the left box and click the Add >> button in the center of the screen to add it to the list in the box on the right.
  5. In the right-hand box, select SortMyReport. Click the Modify button at the bottom-right of the dialog.
  6. Choose a new cell icon and type some ToolTip text to appear by changing the Display Name.
  7. Click OK to close the Modify Button dialog. Click OK to close the Excel Options dialog.

To watch a video of these steps, go to www.youtube.com/watch?v=Qu542zr1cZ8.

Adapting this simple macro to your data set will allow you to quickly perform common multiple-level sorts.

Читать еще:  При отправке на печать word зависает
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×