Оглавление
Для сортировки в Excel с помощью VBA вам необходимо применить Диапазон.Сортировка В этой статье мы покажем вам, как сортировать столбец в Excel с помощью Диапазон.Сортировка метод VBA .
Скачать рабочую тетрадь
Вы можете скачать бесплатную практическую рабочую тетрадь Excel отсюда.
Сортировка столбцов с помощью VBA.xlsm
Метод Range.Sort в Excel VBA
Диапазон.Сортировка метод в VBA сортирует диапазон значений в Excel. Здесь Диапазон это объектная переменная, которая определяет диапазон ячеек, которые мы хотим сортировать в порядке возрастания или убывания.
Ниже приведены параметры, о которых необходимо знать при работе с этим методом.
Параметр | Обязательный/ Факультативный | Тип данных | Описание |
---|---|---|---|
Ключ | Дополнительно | Вариант | Указывает диапазон или столбец, значения которого должны быть отсортированы. |
Заказ | Дополнительно | XlSortOrder | Указывает порядок, в котором будет выполняться сортировка.
|
Заголовок | Дополнительно | XlYesNoGuess | Указывает, содержит ли первая строка заголовки или нет.
|
4 метода реализации VBA для сортировки столбцов в Excel
В этом разделе вы узнаете, как сортировка одного столбца с заголовком и без заголовка , несколько столбцов с заголовками и без них и как сортировать, просто дважды щелкнув по заголовку в столбце в Excel.
1. Встраивание VBA для сортировки одного столбца без заголовка в Excel
Если вы хотите сортировка одного столбца в рабочем листе Excel с VBA код, затем выполните следующие действия.
Это наш столбец, который мы будем сортировать с помощью VBA код.
Шаги:
- Нажмите Alt + F11 на клавиатуре или перейдите на вкладку Разработчик -> Visual Basic открыть Редактор Visual Basic .
- Во всплывающем окне кода в строке меню нажмите Вставка -> Модуль .
- Скопируйте следующий код и вставьте его в окно кода.
Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Теперь ваш код готов к выполнению.
Вот,
- Key1:=Range("B5") → Указано B5 чтобы код знал, какой столбец сортировать.
- Order1:=xlAscending → Уточнил заказ как xlПоднимаясь для сортировки столбца по возрастанию. Если вы хотите отсортировать столбец по убыванию, то напишите xlDescending вместо этого.
- Заголовок:= xlNo → Поскольку наша колонка не имеет заголовка, мы указали ее с помощью параметра xlNo вариант.
- Нажмите F5 на клавиатуре или в строке меню выберите Run -> Run Sub/UserForm Вы также можете просто нажать на маленький значок Play в строке подменю, чтобы запустить макрос.
Вы увидите, что ваша колонка теперь отсортированные в порядке возрастания .
Обратите внимание, что здесь мы определили диапазон данных вручную как Range("B5:B15") .
Если вы хотите изменить данные путем добавления или удаления значений, вы можете реализовать следующий код, который автоматически обновляется на основе ячеек в наборе данных.
Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Обратите внимание, что вместо того, чтобы определять диапазон вручную с помощью Range("B5:B15") , мы написали, Диапазон( "B5", Range("B5"). End(xlDown)) .
Это отсортирует столбец по последней последовательно заполненной ячейке в нем. Если есть пустые ячейки, данные будут рассматриваться только до первой пустой ячейки.
Подробнее: VBA для сортировки таблицы в Excel (4 метода)
2. Вставка макроса VBA для сортировки одного столбца с заголовком
В предыдущем разделе у нас был набор данных с одним столбцом без заголовка, но теперь у нас есть a столбец с заголовком .
На этот раз мы научимся сортировать его с помощью макрос VBA .
Шаги:
- Так же, как и раньше, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
- В окне кода скопируйте следующий код и вставьте его.
Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub
Теперь ваш код готов к выполнению.
Вот,
- Key1:=Range("B5") → Указано B5 чтобы код знал, какой столбец сортировать.
- Order1:=xlDescending → На этот раз мы будем сортировать столбец по убыванию, поэтому укажите порядок как xlDescending .
- Заголовок:= xlYes → Поскольку на этот раз у нашей колонки есть заголовок, мы указали его с помощью xlYes вариант.
- Запускайте этот код, и вы получите столбец с заголовком, отсортированный в порядке убывания .
Читать далее: Как сортировать ListBox с помощью VBA в Excel (полное руководство)
Похожие чтения:
- Как отсортировать IP-адрес в Excel (6 методов)
- [Решено!] Сортировка в Excel не работает (2 решения)
- Как добавить кнопку сортировки в Excel (7 способов)
- Сортировка диапазона с помощью VBA в Excel (6 примеров)
- Как сортировать по имени в Excel (3 примера)
3. Макрос VBA для сортировки нескольких столбцов с заголовком или без него
Вы также можете сортировка нескольких столбцов в наборе данных с помощью кода VBA.
Шаги:
- Как было показано ранее, открытые Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
- В окне кода скопируйте следующий код и вставьте его.
Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With End Sub
Теперь ваш код готов к выполнению.
Вот,
.SortFields.Add Key:=Range("B4"), Order:=xlAscending
.SortFields.Add Key:=Range("C4"), Order:=xlAscending
По этим двум линиям мы определяем Ячейка B4 и C4 сортировать два столбца, связанные с ними в порядок возрастания .
Поскольку в нашем наборе данных есть заголовки, мы указали Заголовок = xlYes в противном случае мы бы написали Заголовок = xlNo внутри кода.
- Запускайте этот код, и вы получите столбцы с заголовком, отсортированные в порядке возрастания .
4. Макрос для сортировки данных двойным щелчком по заголовку в Excel
Если вы хотите с легкостью отсортировать данные просто по двойной щелчок на заголовке вы можете сделать это с помощью VBA код.
Шаги:
- Щелкните правой кнопкой мыши на вкладка листа .
- В появившемся списке опций нажмите Посмотреть код .
- Появится окно кода, скопируйте следующий код и вставьте его туда.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B4:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub End Sub
- Сохранить код.
- Теперь вернитесь к интересующему вас рабочему листу и, если вы дважды щелкните по заголовкам вы увидите, что колонки реорганизуются.
Подробнее: Как сортировать и фильтровать данные в Excel (полное руководство)
О чем следует помнить
- Вы можете создать именованный диапазон и использовать его вместо этого, когда вы передаете диапазон ссылок на ячейки внутри функции Сортировать Например, если вы хотите отсортировать диапазон A1:A10 , вместо того, чтобы передавать его каждый раз внутри кода, вы можете создать именованный диапазон, например, " SortRange " и использовать его с Диапазон.Сортировка метод, например Range("SortRange") .
- Если вы не уверены, имеет ли ваш набор данных заголовки или нет, вы можете позволить системе определить это с помощью параметра xlGuess параметр.
Заключение
В этой статье вы узнаете, как сортировать столбец в Excel VBA Я надеюсь, что эта статья была очень полезна для вас. Не стесняйтесь спрашивать, если у вас есть какие-либо вопросы по этой теме.