Excel VBA Сортировка

Существуют разные способы сортировки данных в Microsoft Excel. Под вкладкой Excel Data находится значок сортировки, откуда вы можете быстро отсортировать данные и получить результаты. Почему тогда нужно писать сложный код VBA?

Вы должны помнить это каждый раз, коды VBA существуют для автоматизации вещей. Предположим, у вас есть данные, которые время от времени обновляются. Может быть, каждый день, еженедельно, ежемесячно и т. Д., И вам нужны ваши данные определенным образом. В таких случаях можно использовать функцию VBA SORT, которая станет удобным инструментом для вашей справки.

VBA имеет метод Range.Sort для сортировки данных. Где Range указывает диапазон ячеек, которые мы хотим отсортировать в порядке возрастания или убывания.

Синтаксис для Range.Sort приведен ниже:

Где,

  • Ключ - столбец / диапазон, который нужно отсортировать. Ex. Если вы хотите отсортировать ячейки A1: A10, вы должны упомянуть Range (A1: A10)
  • Порядок - это параметр, который позволяет сортировать данные в порядке возрастания или убывания.
  • Заголовок - это параметр, который указывает, имеет ли ваш столбец / диапазон заголовки или нет.

Этих трех параметров достаточно для нашей работы. Однако есть некоторые другие параметры, такие как MatchCase, SortMethod и т. Д., Которые вы всегда можете изучить и посмотреть, как они работают.

Как использовать функцию сортировки Excel VBA?

Мы узнаем, как сортировку VBA можно использовать для сортировки столбца без заголовков, столбца с заголовками и нескольких столбцов с примерами в Excel.

Вы можете скачать этот шаблон VBA Sort Excel здесь - Шаблон VBA Sort Excel

Функция сортировки VBA - пример № 1

Сортировка одного столбца без заголовка

Предположим, у вас есть столбец с именами, как показано ниже, и все, что вам нужно, это отсортировать эти данные в алфавитном порядке в порядке возрастания или убывания.

Выполните следующие шаги, чтобы использовать функцию сортировки в VBA.

Шаг 1: Определите новую sup-процедуру в модуле и создайте макрос.

Код:

 Sub SortEx1 () End Sub 

Шаг 2: Используйте функцию Range.Sort для сортировки этого столбца в порядке возрастания.

Код:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Sort End Sub 

Здесь вы даете диапазон, начиная с ячейки A1 до последней использованной / непустой ячейки (см. Функцию .End (xlDown)) для функции Range.Sort.

Шаг 3: Теперь введите значения аргумента.

Код:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Sort Key1: = Range ("A1"), Order1: = xlAscending, заголовок: = xlNo End Sub 

Как мы уже обсуждали ранее, Key, Order и Header являются важными и необходимыми аргументами, которые необходимо предоставить. В качестве начального диапазона столбца мы указали Range («A1»), который нам нужно отсортировать. Порядок предоставляется в порядке возрастания, а заголовок - как нет (что означает, что столбец не имеет заголовка).

Этот код проверяет все непустые ячейки, начиная с A1, а затем сортирует их в порядке возрастания, начиная с ячейки A1.

Шаг 4: Запустите этот код, нажав F5 или кнопку Run вручную и посмотрите результат.

Если вы можете сравнить это с изображением в начале этого примера, вы увидите, что имена отсортированы в порядке возрастания.

Функция сортировки VBA - пример № 2

Сортировка одной колонки с заголовком

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

Выполните следующие шаги, чтобы использовать функцию сортировки в VBA.

Шаг 1: Определите новую подпроцедуру в новой модели для хранения макроса.

Код:

 Sub SortEx2 () End Sub 

Шаг 2: Используйте Sheets («Пример # 2»), чтобы указать, к какому листу относятся ваши данные.

Код:

 Sub SortEx2 () Sheets ("Пример # 2") End Sub 

Шаг 3: Используйте Range («A1»). Сортируйте перед приведенной выше строкой кода, чтобы сделать ее функцией сортировки.

Код:

 Sub SortEx2 () Sheets ("Пример # 2"). Диапазон ("A1"). Sort End Sub 

Шаг 4: Введите Key1 как Range («A1») для сортировки данных из ячейки A1, Order1, чтобы отсортировать данные в порядке возрастания или убывания, и Header как « Да», чтобы система знала, что первая строка является заголовком в вашем данные.

Код:

 Sub SortEx2 () Sheets ("Пример # 2"). Range ("A1"). Sort Key1: = Range ("A1"), Order1: = xlAscending, Header: = xlYes End Sub 

Шаг 5: Запустите этот код, нажав F5 или кнопку Run вручную и посмотрите результат.

Здесь данные из примера № 2 данной рабочей книги Excel сортируются в порядке возрастания, учитывая, что они имеют заголовок. Это означает, что при сортировке этих данных первая строка (которая содержит имя Emp ) игнорируется, поскольку она рассматривается как заголовок для этих данных в столбце A.

Вы также можете отсортировать те же данные в порядке убывания алфавитов. Все, что вам нужно сделать, это изменить порядок с возрастания на убывание.

Шаг 6: Измените order1 на нисходящий, чтобы отсортировать данные в порядке убывания.

Код:

 Sub SortEx2 () Sheets ("Пример # 2"). Range ("A1"). Sort Key1: = Range ("A1"), Order1: = xlDescending, Header: = xlYes End Sub 

Шаг 7: Запустите код и посмотрите вывод, как показано ниже.

Вы можете видеть, что данные отсортированы в порядке убывания.

Функция сортировки VBA - пример № 3

Сортировка нескольких столбцов с заголовками

До сих пор мы рассмотрели, как сортировать данные одного столбца в порядке возрастания или убывания (без заголовка и с заголовком). Что если у вас есть данные, которые нужно отсортировать по нескольким столбцам? Можно ли написать код для того же?

Ответ: «Да, конечно, это можно сделать!»

Предположим, у вас есть данные, указанные ниже:

Вы хотели отсортировать эти данные сначала по Emp Name, а затем по Location. Выполните следующие шаги, чтобы увидеть, как мы можем кодировать его в VBA.

Шаг 1: Определите новую подпроцедуру для добавления макроса в новый модуль.

Код:

 Sub SortEx3 () End Sub 

Шаг 2: Используйте оператор With… End With, чтобы добавить несколько условий сортировки в одном цикле.

Код:

 Sub SortEx3 () с ActiveSheet.Sort End Sub 

Шаг 3: Теперь используйте SortFields.Add, чтобы добавить несколько условий сортировки в одном листе.

Код:

 Sub SortEx3 () с ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending End Sub 

Шаг 4: Определите диапазон листов для сортировки и заголовок На следующем шаге.

Код:

 Sub SortEx3 () с ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1) : C13 ") .Header = xlYes End Sub 

Шаг 5: Используйте .Apply, чтобы применить все это под оператором with и закрыть цикл, пишущий End With.

Код:

 Sub SortEx3 () с ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1) : C13 ") .Header = xlYes. Применить End End End Sub 

Шаг 6: Запустите этот код, нажав F5 или кнопку Run вручную, и увидите результат.

В этом коде ActiveSheets.Sort помогает системе идентифицировать лист, по которому должны быть отсортированы данные. SortFields.Add позволяет добавлять два условия сортировки с их порядком (по возрастанию в обоих случаях). SetRange позволяет системе установить диапазон от A1 до C13. Вы также можете увеличить этот диапазон. Операторы Apply позволяют системе применять все изменения, сделанные в цикле With.

Наконец, вы получите данные, которые отсортированы по имени Emp сначала, а затем по местоположению.

То, что нужно запомнить

  • Под сортировкой VBA вы можете создавать именованные диапазоны вместо ссылок на ячейки и использовать их. Ex. Если вы создали именованный диапазон для ячейки A1: A10 как «EmpRange», вы можете использовать его в Range.Sort, например Range («EmpRange»).
  • Вы можете сортировать данные как по возрастанию, так и по убыванию, как в Excel.
  • Если вы не уверены, есть ли у ваших данных заголовок или нет, вы можете использовать xlGuess в разделе заголовка, чтобы система могла угадать, является ли первая строка данных заголовком или нет.

Рекомендуемые статьи

Это было руководство по сортировке Excel VBA. Здесь мы обсудили VBA Sort и как использовать Excel VBA Sort Function вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

  1. Краткое руководство по Excel Сортировка по номеру
  2. Использование функции соответствия VBA
  3. Как отсортировать столбец в Excel?
  4. VBA Пока Loop | MS Excel

Категория: