Excel VBA Сортиране

Има различни начини за сортиране на данните в Microsoft Excel. Под лентата на раздела Excel Data има икона за сортиране, откъдето можете да сортирате данните накратко и да получите резултатите. Защо тогава е необходимо да се напише сложният VBA код?

Трябва да го държите в ума си всеки път, VBA кодовете са там, за да автоматизирате нещата. Да предположим, че имате данни, които се актуализират от време на време. Може би всеки ден, седмично, месечно и т.н. и се нуждаете от вашите данни по определен сортиран начин. В такива случаи функцията VBA SORT може да се използва и ще излезе като удобен инструмент за справка.

VBA има метод Range.Sort, за да сортира данните за вас. Където Range указва обхвата на клетките, които искаме да подредим във възходящ или низходящ ред.

Синтаксисът за Range.Sort е както е даден по-долу:

Където,

  • Ключ - колона / диапазон, които трябва да сортирате. Ex. Ако искате да сортирате клетки A1: A10, трябва да споменете Range (A1: A10)
  • Поръчка - Това е параметърът, който ви позволява да сортирате данните във възходящ или низходящ ред.
  • Header - Това е параметърът, който определя дали колоната / диапазонът ви има заглавки или не.

Тези три параметъра са достатъчни за нашите процедури. Съществуват обаче и други параметри като MatchCase, SortMethod и др., Които винаги можете да проучите и да видите как работят.

Как да използвате функция за сортиране на Excel VBA?

Ще научим как VBA Sort може да се използва за сортиране на колоната без заглавки, колона с заглавки и Множество колони с примери в excel.

Можете да изтеглите този VBA Sort Excel шаблон тук - VBA Sort Excel шаблон

VBA функция за сортиране - пример №1

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

Да предположим, че имате колона с имена, както е показано по-долу, и всичко, от което се нуждаете, е да подредите тези данни по азбучен ред по възходящ или низходящ ред.

Следвайте стъпките по-долу, за да използвате функцията за сортиране в VBA.

Стъпка 1: Определете нова sup-процедура под модул и създайте макрос.

Код:

 Sub SortEx1 () End Sub 

Стъпка 2: Използвайте функция Range.Sort, за да можете да сортирате тази колона във възходящ ред.

Код:

 Sub SortEx1 () Обхват ("A1", обхват ("A1"). Край (xlDown)). Sort Sort End Sub 

Тук вие давате обхват, започващ от клетка A1 до последната използвана / непразна клетка (вижте функцията .End (xlDown)) до функция Range.Sort.

Стъпка 3: Сега въведете стойностите на аргумента.

Код:

 Sub SortEx1 () Обхват ("A1", обхват ("A1"). Край (xlDown)). Сортиращ ключ1: = обхват ("A1"), Order1: = xlAscending, Header: = xlNo End Sub 

Както вече обсъждахме по-рано, Key, Order и Header са важните и необходими аргументи, които трябва да бъдат предоставени. Дадохме диапазон („A1“) като начален диапазон на колоните, който трябва да сортираме. Поръчката се предоставя като Възходяща и Заглавна като Не (което означава, че колоната няма заглавка).

Този код ще провери за всички непразни клетки, започващи от A1 и след това ще ги сортира във възходящ ред, като се започне от клетка A1.

Стъпка 4: Стартирайте този код, като натиснете F5 или Run бутона ръчно и вижте изхода.

Ако можете да сравните това с изображението в началото на този пример, можете да видите, че имената са подредени във възходящ ред.

VBA функция за сортиране - пример №2

Сортиране на единична колона с хедър

Да предположим, че имате колона с заглавката, както е показано по-долу. И вие искате да сортирате тази колона във възходящ или низходящ ред.

Следвайте стъпките по-долу, за да използвате функцията за сортиране в VBA.

Стъпка 1: Определете нова под-процедура под нов модел, за да съхраните макроса.

Код:

 Sub SortEx2 () End Sub 

Стъпка 2: Използвайте таблици („Пример №2“), за да укажете кой лист е вашите данни.

Код:

 Sub SortEx2 () Таблици ("Пример №2") Край Sub 

Стъпка 3: Използвайте диапазон ("A1"). Сортирайте пред горния ред на кода, за да го направите функция за сортиране.

Код:

 Sub SortEx2 () Таблици ("Пример # 2"). Обхват ("A1"). Sort End Sub 

Стъпка 4: Осигурете Key1 като диапазон („A1“), за да сортирате данните от клетка A1, Order1, за да сортирате данните във възходящ или низходящ ред и Header като Yes, за да уведомите системата, че първият ред е заглавен във вашия данни.

Код:

 Sub SortEx2 () Таблици ("Пример # 2"). Обхват ("A1"). Сортиращ ключ1: = Обхват ("A1"), Order1: = xlAscending, Header: = xlYes End Sub 

Стъпка 5: Стартирайте този код, като натиснете F5 или Run бутона ръчно и Вижте изхода.

Тук данните от Пример №2 на дадена работна книга на excel се сортират във възходящ ред, като се има предвид, че тя има заглавка. Което означава, че докато сортирате тези данни, първият ред (който съдържа име на Emp ) се пренебрегва, защото се счита за заглавие на тези данни в колона А.

Можете също да сортирате същите данни в низходящ ред по азбука. Всичко, което трябва да направите, е да промените реда от възходящ към низходящ.

Стъпка 6: Промяна на ред1 на низходящ, за да сортирате данните в низходящ ред.

Код:

 Sub SortEx2 () Таблици ("Пример # 2"). Обхват ("A1"). Сортиращ ключ1: = Обхват ("A1"), Order1: = xlDescending, Header: = xlYes End Sub 

Стъпка 7: Стартирайте кода и вижте изход, както е дадено по-долу.

Можете да видите, че данните са сортирани в низходящ ред.

VBA функция за сортиране - пример №3

Сортиране на няколко колони с заглавки

До сега разгледахме как да сортираме данни от една колона във възходящ или низходящ ред (без заглавие и с заглавка). Ами ако имате данни, които трябва да сортирате въз основа на няколко колони? Възможно ли е да напишете код за същото?

Отговорът е: „Да, със сигурност може да се направи!“

Да предположим, че имате данни, както са дадени по-долу:

Искате първо да сортирате тези данни по име на име и след това по местоположение. Следвайте стъпките по-долу, за да видите как можем да го кодираме във 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: = Обхват ("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 = xlYes. Прилагане End с End Sub 

Стъпка 6: Стартирайте този код, като натиснете F5 или Run бутона ръчно и вижте изхода.

В този код ActiveSheets.Sort помага на системата да идентифицира листа, под който да се сортират данните. SortFields.Add позволява добавяне на две условия за сортиране с реда им (Възходящо и в двата случая). SetRange позволява на системата да задава диапазона от A1 до C13. Можете също да преместите този диапазон нагоре. Прилагане на операторите позволява на системата да приложи всички промени, направени в With цикъл.

Накрая ще получите данните, които са сортирани въз основа на Emp Name First и след това по местоположение.

Неща, които трябва да запомните

  • Под VBA Сортиране можете да създадете имена от диапазони вместо препратки към клетки и да използвате същите. Ex. Ако сте създали име на диапазон за клетка A1: A10 като „EmpRange“, можете да го използвате под Range.Sort като Range („EmpRange“).
  • Можете да сортирате данните във възходящ, както и в низходящ ред, като тези в excel.
  • Ако не сте сигурни дали вашите данни имат заглавие или не, можете да използвате xlGuess в раздел Header, за да оставите системата да предполага дали първият ред данни е заглавен или не.

Препоръчителни статии

Това е ръководство за сортиране на Excel VBA. Тук обсъдихме VBA Сортиране и как да използвате Excel VBA Sort Function, заедно с практически примери и изтеглящ се шаблон на excel. Можете да разгледате и другите ни предложени статии -

  1. Бързо ръководство за сортиране по номер в Excel
  2. Използване на VBA Match функция
  3. Как да сортирате колона в Excel?
  4. VBA Докато цикъл | MS Excel

Категория: