Excel VBA Сортування

Існують різні способи сортування даних у Microsoft Excel. На стрічці вкладки «Excel Data» знаходиться значок сортування, звідки ви можете сортувати свої дані в один раз, і отримати результати. Чому тоді виникає потреба написати складний код VBA?

Вам потрібно постійно це мати на увазі, коди VBA є автоматизованими. Припустимо, у вас є дані, які оновлюються раз у раз. Можливо, кожного дня, щотижня, щомісяця тощо, і вам потрібні ваші дані в певному сортованому порядку. У таких випадках функція VBA SORT може використовуватися і стане зручним інструментом для вашої довідки.

VBA має метод Range.Sort для сортування даних для вас. Де Range вказує діапазон комірок, який ми хочемо сортувати у порядку зростання чи зменшення.

Синтаксис Range.Sort наведений нижче:

Де,

  • Ключ - стовпчик / діапазон, який потрібно сортувати. Вих. Якщо ви хочете сортувати комірки A1: A10, вам слід згадати діапазон (A1: A10)
  • Порядок - це параметр, який дозволяє сортувати дані у порядку зростання чи спадання.
  • Заголовок - це параметр, який визначає, чи має колонка / діапазон заголовки чи ні.

Цих трьох параметрів достатньо для нашого провадження. Однак є деякі інші параметри, такі як MatchCase, SortMethod тощо, які ви завжди можете вивчити і побачити, як вони працюють.

Як використовувати функцію сортування Excel VBA?

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

Ви можете завантажити цей шаблон VBA Сортування Excel тут - VBA Сортувати шаблон Excel

Функція сортування VBA - приклад №1

Сортування одного стовпчика без заголовка

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

Для використання функції сортування в VBA виконайте наведені нижче дії.

Крок 1. Визначте нову процедуру доповнення під модулем та створіть макрос.

Код:

 Sub SortEx1 () Кінець Sub 

Крок 2: Використовуйте функцію Range.Sort, щоб мати можливість сортувати цей стовпець у порядку зростання.

Код:

 Sub SortEx1 () Діапазон ("A1", Діапазон ("A1"). Кінець (xlDown)). Сортувати Кінець Sub 

Тут ви даєте діапазон, починаючи від комірки A1 до останньої використовуваної / не порожньої комірки (див. Функцію .End (xlDown)) до функції Range.Sort.

Крок 3: Тепер введіть значення аргументу.

Код:

 Sub SortEx1 () Діапазон ("A1", Діапазон ("A1"). Кінець (xlDown)) Ключ сортування1: = Діапазон ("A1"), Order1: = xlAscending, Header: = xlNo End Sub 

Як ми вже обговорювали раніше, ключ, наказ та заголовок - це важливі та необхідні аргументи, які слід надати. Ми вказали діапазон ("A1") як початковий діапазон стовпців, який нам потрібно сортувати. Замовлення надається у вигляді висхідного та заголовка як ні (що означає, що стовпець не має заголовка).

Цей код перевірятиме всі непорожні комірки, починаючи з A1, а потім сортує їх у порядку зростання, починаючи з комірки A1.

Крок 4: Запустіть цей код, натиснувши кнопку F5 або Запустити вручну і побачити вихід.

Якщо ви можете порівняти це із зображенням на початку цього прикладу, ви можете побачити, що імена сортуються у порядку зростання.

Функція сортування VBA - приклад №2

Сортування однієї стовпця із заголовком

Припустимо, у вас стовпчик із заголовком, як показано нижче. І ви хотіли сортувати цей стовпчик у порядку зростання чи спадання.

Для використання функції сортування в VBA виконайте наведені нижче дії.

Крок 1. Визначте нову підпроцедуру в новій моделі для зберігання макросу.

Код:

 Sub SortEx2 () Кінець Sub 

Крок 2: Використовуйте таблиці ("Приклад №2"), щоб вказати, на якому аркуші ваші дані.

Код:

 Листи Sub SortEx2 () ("Приклад №2") Кінець Sub 

Крок 3. Використовуйте діапазон ("A1"). Сортуйте перед вищевказаним рядком коду, щоб зробити його функцією сортування.

Код:

 Sub SortEx2 () Таблиці ("Приклад №2"). Діапазон ("A1"). Сортувати Кінець Sub 

Крок 4: Надайте Key1 як діапазон ("A1") для сортування даних з комірки A1, Order1, щоб сортувати дані у порядку зростання чи спадання та заголовку як Так, щоб система знала, що перший рядок є заголовком у вашому дані.

Код:

 Sub SortEx2 () Таблиці ("Приклад №2"). Діапазон ("A1"). Сортування Key1: = Діапазон ("A1"), Order1: = xlAscending, Header: = xlYes End Sub 

Крок 5: Запустіть цей код, натиснувши кнопку F5 або кнопку «Запустити» вручну та побачити вихід.

Тут дані з Прикладу №2 даної робочої книги Excel сортуються у порядку зростання, враховуючи, що в ньому є заголовок. Це означає, що під час сортування цих даних перший рядок (який містить ім'я Emp ) нехтують, оскільки він вважається заголовком цих даних у колонці А.

Можна також сортувати ті самі дані у порядку зменшення алфавітів. Все, що вам потрібно зробити, - це змінити порядок від висхідного до низхідного.

Крок 6: Змініть порядок1 на низхідний, щоб сортувати дані у порядку зменшення.

Код:

 Sub SortEx2 () Таблиці ("Приклад №2"). Діапазон ("A1"). Сортування Key1: = Діапазон ("A1"), Order1: = xlDescending, Header: = xlYes End Sub 

Крок 7: Запустіть код і подивіться вихід, як зазначено нижче.

Ви можете бачити, що дані сортуються у порядку зменшення.

Функція сортування VBA - приклад №3

Сортування декількох стовпців із заголовками

До цього часу ми розглядали, як сортувати дані одного стовпця у порядку зростання чи зменшення (без заголовка та із заголовком). Що робити, якщо у вас є дані, які потрібно сортувати на основі кількох стовпців? Чи можна написати код для того ж?

Відповідь: "Так, безумовно, це можна зробити!"

Припустимо, у вас є дані, наведені нижче:

Ви хотіли сортувати ці дані спочатку за ім'ям Emp, а потім за місцеположенням. Виконайте наведені нижче кроки, щоб побачити, як ми можемо кодувати його у VBA.

Крок 1: Визначте нову підпроцедуру для додавання макросу під новий модуль.

Код:

 Sub SortEx3 () Кінець Sub 

Крок 2: Використовуйте оператор With… End With, щоб додати кілька умов сортування в одному циклі.

Код:

 Sub SortEx3 () з ActiveSheet.Sort End Sub 

Крок 3: Тепер використовуйте SortFields.Add, щоб додати декілька умов сортування в одному робочому аркуші.

Код:

 Sub SortEx3 () з ActiveSheet.Sort .SortFields.Add Key: = Діапазон ("A1"), Порядок: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending End Sub 

Крок 4: Вирішіть діапазон аркушів для сортування та заголовок На наступному кроці.

Код:

 Sub SortEx3 () з ActiveSheet.Sort .SortFields.Add Key: = Діапазон ("A1"), Порядок: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes End Sub 

Крок 5: Використовуйте .Застосуйте, щоб застосувати всі ці речі під оператором і закрити циклом написання End With.

Код:

 Sub SortEx3 () з ActiveSheet.Sort .SortFields.Add Key: = Діапазон ("A1"), Порядок: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlДА. Застосувати кінець із кінцевим підзарядком 

Крок 6: Запустіть цей код, натиснувши кнопку F5 або Запустити вручну і побачити вихід.

У цьому коді ActiveSheets.Sort допомагає системі ідентифікувати аркуш, під яким слід сортувати дані. SortFields.Add дозволяє додавати два умови сортування з їх порядком (Зростання в обох випадках). SetRange дозволяє системі встановлювати діапазон від А1 до С13. Ви також можете перемістити цей діапазон вгору. Застосувати оператори дозволяє системі застосовувати всі зміни, внесені в циклі With.

Нарешті, ви отримаєте дані, відсортовані на основі спочатку ім'я Emp, а потім за місцем розташування.

Що потрібно пам’ятати

  • У розділі Сортування VBA можна створити іменовані діапазони замість посилань на комірки та використовувати ті самі. Вих. Якщо ви створили названий діапазон для комірки A1: A10 як "EmpRange", ви можете використовувати його під Range.Sort як діапазон ("EmpRange").
  • Ви можете сортувати дані як у порядку зростання, так і в порядку зменшення так само, як у excel.
  • Якщо ви не впевнені, має ваші дані заголовок чи ні, ви можете використовувати xlGuess у розділі Заголовок, щоб дозволити системі здогадуватися, чи є перший рядок даних заголовком чи ні.

Рекомендовані статті

Це керівництво для сортування Excel VBA. Тут ми обговорили VBA Сортування та як використовувати функцію сортування Excel VBA разом із практичними прикладами та шаблоном Excel, який можна завантажити. Ви також можете ознайомитися з іншими запропонованими нами статтями -

  1. Короткий посібник для сортування Excel за кількістю
  2. Використання функції VBA Match
  3. Як сортувати стовпчик в Excel?
  4. VBA Поки цикл | MS Excel

Категорія: