Как да сортирате диапазона с помощта на VBA в Excel (6 примера)

  • Споделя Това
Hugh West

Знанието за сортиране на диапазони с помощта на VBA в Excel спестява време и усилия при ежедневните ни изчисления. Въпреки че Excel предоставя възможност за сортиране по подразбиране. Range.Sort метод , получаваме достъп до няколко параметъра за сортиране на набор от данни с повече възможности от обикновено.

Изтегляне на работна тетрадка за практика

Изтеглете тази учебна тетрадка, за да се упражнявате, докато четете тази статия.

Сортиране на обхвата в Excel.xlsm

Въведение в изявлението Range.Sort в Excel VBA

Цел : Сортиране на диапазон от данни в клетки.

Синтаксис:

изразяване .Sort ( Ключ1 , Поръчка1 , Ключ2 , Тип , Поръчка2 , Ключ3 , Поръчка3 , Заглавие , OrderCustom , 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:=xlDescending, _ Header:=xlYes End Sub 

Натиснете F5 или щракнете върху Изпълнявайте бутон, за да изпълни кода.

Обяснение:

В горния код поставяме-

Изразяване (обект Range)=Range("D4:D11"); на колона за възраст с заглавие в клетка D4 и стойности в D5:D11.

Ключ = Range("D4"); на ключ за сортиране.

Order= xlDescending; както искаме да сортиране стойности от най-големият към най-ниска задаваме ред на сортиране като в низходящ ред.

Header =xlYes; На следващата екранна снимка се вижда, че набор от данни има заглавие за всеки от колони.

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

Въведете следния код във визуалния редактор на код.

 Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub 

Натиснете F5 или щракнете върху Изпълнявайте бутон, за да изпълни кода.

Обяснение:

В горния код поставяме-

Изразяване (обект Range)=Range("D4:D10"); на колона за възраст без заглавие има стойности в D4:D10.

Ключ = 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") , ключът за сортиране на имената.

Поръчка2: =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("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1: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 За да демонстрираме сортирането, първо задаваме различни фонови цветове към редовете на нашия набор от данни .

След това в редактора на кода на Visual Basic копие следния код и натиснете F5 за да го стартирате.

 Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("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 като обхват . Кодът ще сортира данните въз основа на ключа.
  • В този пример сме посочили и параметъра на заглавието като xlYes .
  • Тук задаваме поръчка параметър като възходящо, така че подреди данните от по-ниски към по-високи стойности. .
  • Стойността на 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 и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.