Как да сортирате работни листове в Excel, използвайки VBA (по азбучен ред)

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

След като имате повече от няколко работни листа, трябва ръчно да ги подредите.

Колко лесно би било, ако имаше начин бързо да сортирате работните листове в Excel.

Въпреки че няма вграден начин за това, това може да се направи (лесно) с помощта на VBA.

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

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

VBA код за сортиране на работни листове в Excel

По -долу е кодът, който ще сортира работните листове по азбучен ред, веднага щом го стартирате.

Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count For i = 1 To ShCount - 1 For j = i + 1 To ShCount If UCase (Sheets (j). Име) <UCase (Sheets (i) .Name) Тогава Sheets (j). Преместване преди: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

Горното е прост код, който използва за цикли For Next за анализ на всеки работен лист спрямо всички работни листове.

Той сравнява името на работния лист с всички работни листове и го премества въз основа на името му по азбучен ред.

След това се преминава към следващия работен лист и след това се проверява спрямо всички работни листове.

Този процес се повтаря за всички работни листове и крайният резултат е ред на работния лист, сортиран по азбучен ред.

Няколко важни неща, които трябва да знаете за този код:

  1. Функцията UCase се използва, за да се гарантира, че малките и големите букви не се третират по различен начин.
  2. Стойността на Application.ScreenUpdating е зададена на False в началото на кода и се променя на True в края на кода. Това гарантира, че докато кодът работи, не виждате това да се случва на екрана. Това също помага за ускоряване на изпълнението на кода.

Ако искате да сортирате работни листове в низходящ ред, трябва само да промените знака (по -голям от).

Кодът по -долу би сортирал работните листове в низходящ ред:

„Този ​​код ще сортира работните листове по азбучен ред Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count For i = 1 To ShCount - 1 For j = i + 1 To ShCount Ако UCase (Sheets (j) .Name)> UCase (Sheets (i) .Name) then Sheets (j) .Move before: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

Можете също така да дадете на потребителя възможност да избере дали той/тя иска да сортира във възходящ/низходящ ред.

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

Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder As VbMsgBoxResult SortOrder = MsgBox ("Изберете Да за възходящ ред и No за низходящ ред", vbYesCoCountl) i = 1 To ShCount - 1 For j = i + 1 To ShCount If SortOrder = vbYes then If UCase (Sheets (j) .Name) UCase (Sheets (i) .Name) then Sheets (j) .Move before: = Sheets (i) Край Ако Край Ако Следващ j Следващ i Приложение.ScreenUpdating = True End Sub

Горният код, когато се изпълнява, показва съобщение, както е показано по -долу. Той сортира въз основа на селекцията (Да за възходящ и Не за низходящ).

В случай, че щракнете върху Отказ, кодът спира и нищо не се случва.

Забележка: Сортирането не може да бъде отменено. В случай, че искате да запазите и оригиналната поръчка, направете копие на работната книга.

Дума на предпазливост: Горният код работи в повечето случаи. Една област, където той ще ви даде грешен резултат, е когато имате имена на раздели като Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. В идеалния случай бихте искали всички раздели за едни и същи години да бъдат заедно, но това няма да стане, тъй като Q12021-2022 ще бъде поставен преди Q22021-2022.

Къде да поставите VBA кода

Excel има VBA бекенд, наречен VBA редактор.

Трябва да копирате и поставите VBA кода в кодовия прозорец на модула VB Editor.

Ето стъпките за това:

  1. Щракнете върху раздела „Разработчик“. (Не виждате раздела за програмисти? Щракнете тук, за да научите как да го получите).
  2. Щракнете върху опцията Visual Basic. Това ще отвори VB редактора в задната част.
  3. В прозореца Project Explorer в редактора на VB щракнете с десния бутон върху всеки обект за работната книга, в който искате да вмъкнете кода. (Ако не виждате Project Explorer, отидете в раздела „Изглед“ и кликнете върху „Project Explorer“.)
  4. Отидете на Вмъкване и щракнете върху Модул. Това ще вмъкне обект на модул за вашата работна книга.
  5. Копирайте и поставете кода в прозореца на модула.

Как да стартирате VBA кода

В Excel има различни начини за стартиране на VBA кода.

Можете да стартирате кода направо от редактора на Visual Basic (наричан още VB Editor).

Можете да вмъкнете бутон или фигура в работния лист и да му присвоите макроса. Когато щракнете върху бутона, той ще стартира макроса незабавно.

Можете също да добавите макроса към лентата с инструменти за бърз достъп (QAT). Сега, когато трябва да сортирате разделите на работния лист, можете просто да кликнете върху иконата на макрокода в QAT.

Можете да прочетете всичко за изпълнението на макроса тук - Как да стартирате макрос в Excel (или да гледате видеоклипа по -долу).
Може да харесате и следните уроци по Excel/VBA:

  • Как да сортирате данни в Excel с помощта на VBA.
  • Автоматично сортиране на данни по азбучен ред с помощта на формула.
  • Как да направите сортиране на данни на много нива в Excel.
  • Въведение в опциите за сортиране на данни в Excel.
  • Excel VBA Автофилтър: Пълно ръководство с примери
  • Как да групирате работни листове в Excel
  • Как да обърнете данни в Excel

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave