VBA за сортиране на колона в Excel (4 метода)

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

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

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

Можете да изтеглите безплатната учебна тетрадка на Excel от тук.

Сортиране на колона с VBA.xlsm

Метод Range.Sort в Excel VBA

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

По-долу са описани параметрите, които трябва да знаете, докато работите с този метод.

Параметър Задължително/незадължително Тип данни Описание
Ключ По избор Вариант Посочва диапазона или колоната, чиито стойности трябва да се сортират.
Поръчка По избор XlSortOrder Определя реда, в който ще се извърши сортирането.
  • xlПовишаване на = За сортиране във възходящ ред.
  • xlНамаляващ = За сортиране в низходящ ред.
Заглавие По избор XlYesNoGuess Указва дали първият ред съдържа заглавия или не.
  • xlNo = Когато колоната няма никакви заглавия; Стойност по подразбиране.
  • xlYes = Когато колоните имат заглавия.
  • xlПознай = За да позволите на Excel да определи заглавията.

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 . надявам се, че тази статия е била много полезна за вас. Не се колебайте да питате, ако имате някакви въпроси по темата.

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.