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