Зміст
Для сортування в Excel за допомогою VBA Вам необхідно подати заявку на участь у конкурсі Range.Sort У цій статті ми покажемо вам, як відсортувати стовпець в Excel за допомогою Range.Sort метод VBA .
Завантажити Робочий зошит
Ви можете завантажити безкоштовну практичну книгу Excel тут.
Сортування стовпця за допомогою VBA.xlsm
Метод Сортування діапазону в Excel VBA
Range.Sort метод в 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:=xlЗа зростанням → Вказав наказ як xlЗростання щоб відсортувати стовпець за зростанням. Якщо ви хочете відсортувати стовпець за спаданням, то напишіть xlПо спадаючій натомість.
- Заголовок:= xlNo → Оскільки наш стовпець не має заголовка, то ми вказали його за допомогою xlНі варіант.
- Преса F5 на клавіатурі або в рядку меню виберіть Виконати -> Run Sub/UserForm Ви також можете просто натиснути на кнопку маленька іконка відтворення в рядку підменю для запуску макросу.
Ви побачите, що ваша колонка тепер відсортовано за зростанням .
Зверніть увагу, що тут ми визначили діапазон даних вручну як Range("B5:B15") .
Якщо ви хочете змінити дані, додавши або видаливши значення, ви можете реалізувати наступний код, який автоматично оновлюється на основі комірок у наборі даних.
Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Зверніть увагу, що замість визначення діапазону вручну за допомогою Range("B5:B15") ми вже писали, Range( "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 → Цього разу ми відсортуємо стовпець за спаданням, тому задамо такий порядок xlПо спадаючій .
- Заголовок:= xlYes → Оскільки в нашому стовпчику є заголовок, то ми вказали його за допомогою параметра xlТак варіант.
- Біжи цей код і ви отримаєте стовпець із заголовком, відсортований за спаданням .
Читати далі: Як сортувати 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 інакше ми б написали Header = 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("B15:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B15:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub
- Зберегти код.
- Тепер поверніться до аркуша, який вас цікавить, і якщо ви двічі клацніть по заголовкам ви побачите, що колонки реорганізуються.
Читати далі: Як сортувати та фільтрувати дані в Excel (повне керівництво)
Важливі моменти для запам'ятовування
- Ви можете створити іменований діапазон і використовувати його, коли ви передаєте діапазон посилань на комірки всередині Сортування Наприклад, якщо потрібно відсортувати діапазон A1:A10 замість того, щоб кожного разу передавати його всередині коду, можна створити з нього іменований діапазон, наприклад " SortRange " і використовуйте його з Range.Sort такий метод, як Range("SortRange") .
- Якщо ви не впевнені, чи є у вашому наборі даних заголовки чи ні, ви можете дозволити системі визначити це за допомогою кнопки xlGuess параметр.
Висновок
У цій статті ви дізнаєтеся, як відсортувати стовпець в Excel VBA Сподіваюся, ця стаття була для вас дуже корисною. Не соромтеся запитувати, якщо у вас виникнуть запитання щодо цієї теми.