Якщо ви працюєте з великою кількістю аркушів у 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 для аналізу кожного аркуша щодо всіх аркушів.
Він порівнює назву робочого аркуша з усіма аркушами і переміщує його на основі його імені в алфавітному порядку.
Потім він переходить до наступного аркуша, а потім звіряє його з усіма аркушами.
Цей процес повторюється для всіх аркушів, і кінцевий результат - це порядок аркушів, відсортований в алфавітному порядку.
Кілька важливих речей, які потрібно знати про цей код:
- Функція UCase використовується для того, щоб переконатися, що малі та великі регістри не трактуються по -різному.
- Значення 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), то Sheets (j) .Перейти до: = 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 для порядку спадання", vbYesCoCountCancel) i = 1 Для ShCount - 1 Для j = i + 1 Для ShCount Якщо SortOrder = vbТак Якщо If UCase (Sheets (j) .Name) UCase (Sheets (i) .Name) Тоді Sheets (j). (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.
Нижче наведено кроки для цього.
- Перейдіть на вкладку «Розробник». (Не бачите вкладку розробника? Натисніть тут, щоб дізнатися, як її отримати).
- Натисніть на опцію Visual Basic. Це відкриє редактор VB у бекенді.
- На панелі «Провідник проектів» у редакторі VB клацніть правою кнопкою миші будь-який об’єкт книги, до якого потрібно вставити код. (Якщо ви не бачите Провідник проектів, перейдіть на вкладку «Перегляд» і натисніть «Провідник проектів».)
- Перейдіть до пункту Вставити та натисніть Модуль. Це додасть об’єкт модуля до вашої книги.
- Скопіюйте та вставте код у вікно модуля.
Як запустити код VBA
В Excel є різні способи запуску коду VBA.
Ви можете запустити код прямо з редактора Visual Basic (також відомого як редактор VB).
Ви можете вставити кнопку або фігуру в аркуш і призначити їй макрос. При натисканні на кнопку миттєво запускається макрос.
Ви також можете додати макрос до панелі швидкого доступу (QAT). Тепер, коли вам потрібно сортувати вкладки аркуша, ви можете просто натиснути на значок коду макросу в QAT.
Ви можете прочитати все про запуск макросу тут - Як запустити макрос в Excel (або подивіться відео нижче).Вам також можуть сподобатися такі підручники Excel/VBA:
- Як сортувати дані в Excel за допомогою VBA.
- Автоматично сортувати дані в алфавітному порядку за допомогою формули.
- Як виконати багаторівневу сортування даних в Excel.
- Вступ до параметрів сортування даних Excel.
- Автофільтр Excel VBA: Повний посібник із прикладами
- Як групувати робочі аркуші в Excel
- Як перевернути дані в Excel