Сортирайте работните листове в работна книга, като използвате VBA в Microsoft Excel

Anonim

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

В приложената работна книга има два модула:-

Модул 1 съдържа макроса „SortWorksheets“, който е присвоен на бутона „Submit“ на листа „Macro“.

Този макрос сортира всички работни листове с изключение на първия работен лист, който е основният лист, наречен „Макро“.

Когато потребителят кликне върху бутона „Изпращане“, всички листове след листа „Макро“ ще бъдат сортирани във възходящ или низходящ ред по избор на потребителя в комбинираното поле.

Модул 2 съдържа два макроса „AscendingSortOfWorksheets“ и „DecendingSortOfWorksheets“. При стартиране на макроса „AscendingSortOfWorksheets“ той ще сортира всички работни листове, присъстващи в работната книга, във възходящ ред. При стартиране на макроса „DecendingSortOfWorksheets“ той ще сортира всички работни листове, присъстващи в работната книга, в низходящ ред.

Логично обяснение

Алгоритъмът за сортиране на балончета се използва за сортиране на работни листове в работната книга.

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

В тази статия нашата цел е да сортираме работните листове в работната книга по техните имена. Работната книга, която използваме, се състои от различни работни листове с имена като Финансово табло, Човешки ресурси и Табло за продажби.

За да постигнем тази цел, използвахме алгоритъм за сортиране на балончета за сортиране на работни листове.

Обяснение на кода

Макрос за сортиране на работни листове

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

За да добавите комбинирано поле, следвайте стъпките по-долу:-

  1. Отидете на раздел Разработчик> Щракнете върху Вмъкване> Щракнете върху иконата на комбинирано поле под контрол на формуляра

  1. Щракнете с десния бутон върху комбинираното поле и щракнете върху контрол на формата.

  1. Отидете на раздела за управление, Присвойте елемента и свържете комбинираното поле с клетка XFC1.

ComboBoxValue = Обхват ("XFC1"). Стойност

Комбинираното поле в работния лист „Макро“ е свързано с клетка XFC1. Така че, за получаване на стойност от клетка XFC1, се използва променливата ComboBoxValue.

За i = 2 За SCount - 1

Цикълът FOR започва с променлива i, стойност започваща от 2, тъй като искаме да изключим първия работен лист от работната книга от сортирането.

Ако ComboBoxValue = 1 Тогава

IF условието се използва за проверка дали да се сортира във възходящ или низходящ ред. Ако стойността на ComboBoxValue е 1, тогава сортирайте във възходящ ред, в противен случай низходящ ред.

Работни листове, сортирани във възходящ ред

Работни листове, сортирани в низходящ ред

ВъзходящиSortOfWorksheets и DecendingSortOfWorksheets

AscendingSortOfWorksheets и DecendingSortOfWorksheets макросите могат да се изпълняват чрез натискане на Alt + F8 клавиш за бърз достъп или Отидете на раздел Developer> Щракнете върху Macro> изберете макроса и щракнете върху run. Те ще сортират всички работни листове, присъстващи в работната книга. Тези макроси могат да се изпълняват и в други работни книги.

Работни листове, сортирани след стартиране на макрос AscendingSortOfWorksheets

Работни листове, сортирани във възходящ ред макрос DecendingSortOfWorksheets

Моля, следвайте кода по -долу

 Sub AscendingSortOfWorksheets () 'Сортиране на работни листове в работна книга във възходящ ред Dim SCount, i, j As Integer' За деактивиране на актуализации на екрана Application.ScreenUpdating = False 'Получаване на общ номер на листове в работна книга SCount = Worksheets.Count 'Проверка на условието дали броят на работните листове е по -голям от 1, Ако броят е един, тогава излезте от процедурата Ако SCount = 1 След това Излезте от Sub' Използване на сортиране на балончета като алгоритъм за сортиране 'Превъртане през всички работни листове За i = 1 Към SCount - 1 'Правене на сравнение на избраното име на лист с други листове за преместване на избрания лист до подходяща позиция За j = i + 1 Към SCount Ако работни листове (j). Име  Работни листове (i). Име След това работни листове (j). Преместване преди: = Работни листове (i) Край, ако Следващ j Следващ i Краен под 

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

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