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. Вы также можете просмотреть наши другие предлагаемые статьи -
- Краткое руководство по Excel Сортировка по номеру
- Использование функции соответствия VBA
- Как отсортировать столбец в Excel?
- VBA Пока Loop | MS Excel