Як відсортувати діапазон за допомогою VBA в Excel (6 прикладів)

  • Поділитися Цим
Hugh West

Знання того, як сортувати діапазон за допомогою VBA в Excel, економить час і зусилля в наших щоденних розрахунках. Хоча Excel надає можливість сортування за замовчуванням. Range.Sort метод ми отримуємо доступ до декількох параметрів для сортування набору даних з більшою кількістю опцій, ніж зазвичай.

Завантажити Практичний посібник

Завантажте цей практичний посібник, щоб потренуватися, поки ви читаєте цю статтю.

Сортування діапазону в Excel.xlsm

Введення в оператор Range.Sort в Excel VBA

Мета Сортування діапазону даних комірок.

Синтаксис:

вираз Сортування ( Key1 , Замовлення1 , Key2 , Тип , Замовлення2 , Key3 , Замовлення3 , Заголовок , ЗамовленняЗамовлення , MatchCase , Орієнтація , SortMethod , DataOption1 , DataOption2 , DataOption3 )

Тут, в рамках програми "Відкритий світ", відбулася презентація вираз являє собою Діапазон об'єкт, тобто комірка, рядок, стовпець або вибірка комірок.

Аргументи:

Ми повинні забезпечити три основні параметри для Range.Sort метод. Вони...

Ключ - Діапазон комірок з одного або декількох стовпців, які потрібно відсортувати.

Замовлення - Вкажіть порядок сортування: за зростанням або за спаданням.

Заголовок - Оголосити, чи мають стовпці, що сортуються, заголовок чи ні.

6 Приклади сортування діапазону в Excel VBA

У цій статті в якості набору даних ми використаємо список імен людей з датою народження та віком. Ми застосуємо різні методи для сортування набору даних. Давайте пройдемо статтю та потренуємося освоювати ці методи на практиці.

1. Сортування діапазону з одним стовпцем за допомогою Excel VBA

У цьому прикладі ми сорт люди з найстаріший до наймолодший Давайте виконаємо наступні кроки, щоб скористатися Діапазон . Сортування метод що буде сорт в "Урядовому кур'єрі". Вікова колонка в за спаданням .

Сходинки:

  • Перейдіть на сторінку Вкладка "Розробник в Стрічка Excel до клацнути на Visual Basic

  • Потім виберіть Варіант модуля від Вставка вкладки щоб відкрити новий модуль .

Тепер, ми застосуємо наш код до сорт в "Урядовому кур'єрі". Вік діапазон стовпців.

1.1 Стовпчик із заголовком

У візуальному редакторі коду введіть наступний код.

 Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlЗа спаданням, _ Header:=xlТак End Sub 

Преса F5 або натисніть на кнопку Біжи кнопку, щоб виконати код.

Пояснення:

У вищенаведеному коді ми ставимо

Вираз (об'єкт Діапазон)=Діапазон("D4:D11"); в "Урядовому кур'єрі". вікова колонка з заголовок в комірка D4 і цінності в D5:D11.

Key = Range("D4"); в "Урядовому кур'єрі". ключ для сортування.

Order= xlDescending; як ми хочемо сорт значення від найбільший до найнижчий ми встановили порядок сортування як знижуються.

Заголовок =xlТак; На наступному скріншоті ми бачимо, що набір даних має заголовок для кожного з них колонки.

1.2 Колонка без заголовка

У візуальному редакторі коду введіть наступний код.

 Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlЗа спаданням, _ Header:=xlНі End Sub 

Преса F5 або натисніть на кнопку Біжи кнопку, щоб виконати код.

Пояснення:

У вищенаведеному коді ми ставимо

Вираз (об'єкт Діапазон)=Діапазон("D4:D10"); в "Урядовому кур'єрі". вікова колонка без заголовок має цінності в D4:D10.

Key = Range("D4"); в "Урядовому кур'єрі". ключ для сортування.

Order= xlDescending; як ми хочемо сорт значення від найбільший до найнижчий ми встановили порядок сортування як знижуються.

Заголовок =xlNo; На наступному скріншоті ми бачимо, що набір даних не має заголовок.

Пов'язаний контент: Як відсортувати стовпці в Excel без змішування даних (3 способи)

2. Використання коду VBA для сортування багатостовпцевого діапазону в Excel

Показати сортування за кілька колонок нам потрібно змінювати наш набір даних Трохи. Ми вставлений кілька новий ряди У модифікованому наборі даних рядки 7, 8, і 9 мають той самий значення для дата народження і віки але три різні назви Ці імена є не в будь-якому конкретне замовлення висхідного чи низхідного.

У цьому прикладі ми впорядкуємо імена в за зростанням Запустимо наступний код у редакторі Visual Basic:

 Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub 

Пояснення:

На наведеному вище скріншоті ми бачимо, що вік у колонка D це відсортований в за спаданням Порядок. Ми додали ще два параметра в нашому попередньому кодексі.

Key2: =Range("B4") ключ для сортування імен.

Order2: =xlAscending "Про те, що в Україні не існує жодного закону, який би порядок для скорочені назви .

Як наслідок, ми бачимо, що імена в рядки 7, 8 та 9 зараз за алфавітом відсортовано висхідний порядок.

На наступному скріншоті ми змінили значення про Параметр Order2 до сорт в "Урядовому кур'єрі". імена в за спаданням порядок.

Читати далі: Як сортувати кілька стовпців в Excel (5 швидких способів)

3. Двічі клацніть на заголовку, щоб відсортувати діапазон стовпців у Excel VBA

Стандартна функція сортування в Excel не дозволяє значення сортування стовпчика на подвійне натискання в "Урядовому кур'єрі". заголовок стовпчика Але за допомогою коду на VBA ми можемо це зробити. Проілюструємо цю функціональність на прикладі наступного коду.

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A:C8").Sort Key1:=KeyRange, Header:=xlYes End If End Sub 

У цьому коді ми використовували Подія BeforeDoubleClick до відключити звичайний дубль - клацнути який має розпочати роботу над створенням редагування При виконанні цієї події, якщо ми подвійний - клацнути на будь-якому з заголовки стовпців сортує дані стовпця в за зростанням .

Читати далі: VBA для сортування стовпця в Excel (4 способи)

Схожі читання:

  • Як додати кнопку сортування в Excel (7 способів)
  • Сортування унікального списку в Excel (10 корисних способів)
  • Як використовувати функцію сортування в Excel VBA (8 відповідних прикладів)
  • Сортування дублікатів в Excel (стовпці та рядки)
  • Випадкове сортування в Excel (формули + VBA)

4. Сортування діапазону стовпців на основі кольору фону за допомогою Excel VBA

Ми можемо сортувати діапазон комірок у стовпці на основі на своїх колір фону Для цього нам необхідно додавати a параметр названий SortOn яка має значення xlSortOnCellColor Для демонстрації сортування спочатку задамо різні значення кольори фону до лав нашого набір даних .

Потім в редакторі візуального базового коду копія наступний код і натисніть F5 щоб керувати ним.

 Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksbooks("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksbooks("background").Sort .SetRange Range("B4:D10") .Apply End With End Sub 

На наступному скріншоті ми можемо побачити відсортований набір даних за кольором фону.

Пояснення:

  • У цьому прикладі ми назвали робочий аркуш " передісторія "Отже, в кодексі ми записали " передісторія "як наші ім'я активного аркуша.
  • Ми встановили B4 в якості ключ і B4:D10 в якості діапазон Код буде сортувати дані на основі ключа.
  • Оскільки ми не вказали, що саме параметр заголовку код виконується за замовчуванням без заголовка.
  • Ми встановили порядок параметр як висхідний, тому вона відсортувала дані від менших до більших значень .

Читати далі: Як сортувати за кольором в Excel (4 критерії)

5. Застосування коду VBA для сортування діапазону стовпців на основі кольору шрифту

Застосовуючи код VBA, ми можемо відсортувати наш набір даних на основі їх колір шрифту По-перше, нам потрібно розфарбувати різні рядки Проілюструємо на прикладі.

Застосуйте наведений нижче код для сортування набору даних на основі колір шрифту.

 Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub 

Пояснення:

  • У цьому прикладі ми назвали робочий аркуш " колір шрифту "Отже, в кодексі ми записали " колір шрифту "як наші ім'я активного аркуша.
  • Ми встановили B4 в якості ключ і B4:D11 в якості діапазон Код буде сортувати дані на основі ключа.
  • У цьому прикладі ми також вказали параметр заголовку у вигляді xlТак .
  • Тут ми встановили порядок параметр як висхідний, тому вона відсортувала дані від менших до більших значень .
  • Значення цього показника SortOn параметр дорівнює
  • На сьогоднішній день, на жаль, це не так. параметр орієнтації утримує значення xlTopToBottom оскільки це є обов'язковим.
  • Колір для сортування в термінах RGB, який має значення від 0 до 255 .

Читати далі: Як відсортувати два стовпці в Excel на збіг (як повний, так і частковий)

6. Зміна орієнтації для сортування діапазону за допомогою Excel VBA

За допомогою орієнтація ми можемо змінити спосіб сортування даних. У цьому прикладі ми маємо перенесений наш набір даних до сорт це по горизонталі .

Помістимо наступний код в редактор Visual Basic і натиснемо F5 для його виконання.

 Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub 

Тут ми відсортований дані на основі віковий ряд в висхідний замовлення від лівий до правильно У коді встановлюємо значення орієнтація параметр як xlSortRows .

Пов'язаний контент: Як автоматично сортувати кілька стовпців у Excel (3 способи)

Важливі моменти для запам'ятовування

  • На сьогоднішній день, на жаль, це не так. Параметр SortOn що ми звикли сорт діапазон стовпців на основі колір фону і колір шрифту може бути використаний тільки об'єкт робочого аркуша Ми не можемо використовувати його з об'єкт полігону .
  • На сьогоднішній день, на жаль, це не так. Подія BeforeDoubleClick сортує дані тільки в висхідний.

Висновок

Тепер ми знаємо, як сортувати діапазон за допомогою VBA в Excel. Сподіваємося, це допоможе вам використовувати його більш впевнено. Якщо у вас виникнуть питання або пропозиції, не забувайте залишати їх у полі для коментарів нижче.

Г’ю Вест — досвідчений тренер і аналітик Excel із понад 10-річним досвідом роботи в галузі. Він має ступінь бакалавра з бухгалтерського обліку та фінансів і ступінь магістра з ділового адміністрування. Г’ю має пристрасть до викладання та розробив унікальний підхід до викладання, який легко зрозуміти та дотримуватися. Його експертне знання Excel допомогло тисячам студентів і професіоналів у всьому світі вдосконалити свої навички та досягти успіху в кар’єрі. У своєму блозі Г’ю ділиться своїми знаннями зі світом, пропонуючи безкоштовні навчальні посібники з Excel та онлайн-навчання, щоб допомогти окремим особам і компаніям повністю розкрити свій потенціал.