Вы здесь
Сортировка листов в Excel с помощью макроса

В этом уроке разберем один из способов сортировки листов по алфавиту.
Максимальное количество листов в книге Excel ограничено размером доступной оперативной памяти. Когда количество листов в книге превышает двух десятков, то удобнее искать нужный лист, если их имена отсортированы по возрастанию.
В MS Excel нет встроенного средства для такой сортировки, создадим простой макрос для упорядочивания листов.
Добавим в нашу рабочую книгу лист и в первом столбце этого листа запишем все названия листов данной книги. Отсортируем диапазон с именами листов, переместим листы согласно сортировке и готово!
Option Explicit Sub СортировкаЛистов() Dim i As Integer Dim wsh As Worksheet Dim wsh_count As Integer With ThisWorkbook Set wsh = .Worksheets.Add 'добавление нового листа wsh_count = .Worksheets.Count Application.ScreenUpdating = False 'отключение обновления экрана 'запись названий листов в столбец А нового листа For i = 1 To wsh_count wsh.Cells(i, 1).Value = .Worksheets(i).Name Next i 'сортировка диапазона по возрастанию wsh.Range("A1:B" & Trim(CStr(wsh_count))).Sort _ Key1:=wsh.Cells(1, 1), order1:=xlAscending, Header:=xlNo For i = 2 To wsh_count .Worksheets(wsh.Cells(i, 1).Value).Move _ After:=.Worksheets(wsh.Cells(i - 1, 1).Value) Next i End With Application.DisplayAlerts = False 'отключение оповещений wsh.Delete 'удаление добавленного листа Application.ScreenUpdating = True 'включение обновления экрана Application.DisplayAlerts = True 'включение оповещений Set wsh = Nothing End Sub
Теперь подробнее разберем используемые методы в алгоритме
синтаксис Worksheets.Add (Before, After, Count, Type) - добавление листов в книгу Excel
After- указывает лист, после которого будет добавлен рабочий лист
Before- указывает лист, перед которым будет добавлен рабочий лист
Count - количество добавляемых листов, по умолчанию 1
Type - тип рабочего листа, по умолчанию xlWorkSheet
Если Before и After опущены, то по умолчанию лист размещается после активного листа
синтаксис Worksheets.Move (Before|After) - перемещение рабочего листа в другое место рабочей книги Excel
After- указывает лист, после которого будет перемещен рабочий лист
Before- указывает лист, перед которым будет перемещен рабочий лист
Одновременно может быть указан только один аргумент (After или Before)
Воспользуемся встроенной возможностью Excel – сортировкой диапазона.
ДиапазонТаблицы.Sort ([Key1], [Order1 As XlSortOrder = xlAscending], [Key2], [Type], [Order2 As XlSortOrder = xlAscending], [Key3], [Order3 As XlSortOrder = xlAscending], [Header As XlYesNoGuess = xlNo], [OrderCustom], [MatchCase], [Orientation As XlSortOrientation = xlSortRows], [SortMethod As XlSortMethod = xlPinYin], [DataOption1 As XlSortDataOption = xlSortNormal], [DataOption2 As XlSortDataOption = xlSortNormal], [DataOption3 As XlSortDataOption = xlSortNormal])
ДиапазонТаблицы - диапазон Range для сортировки
Key1 - первое упорядочиваемое поле
Order1 - порядок сортировки, xlAscending- по возрастанию, xlDescending- по убыванию
Header - заголовок (xlNo - отсутствует, xlYes - есть, xlGuess - Excel определяет сам)
OrderCustom - пользовательский порядок сортировки, по умолчанию Normal
MatchCase - True или False (учитывается или нет регистр)
Orientation - направление сортировки, xlSortRows - по строкам, xlSortColumns - по столбцам
Диапазон до сортировки
Диапазон после сортировки
Application.DisplayAlerts = False отключение оповещений
Без этой команды при выполнении макроса перед удалением листа появится сообщение
Результат выполнения макроса:
- 5077 просмотров
Добавить комментарий