Распределение вкладок рабочего листа в алфавитном порядке (Microsoft Excel)
Если вы работаете над проектом, который использует много листов в книге, вы можете отсортировать их по имени листа. Следующий короткий макрос отлично справится с задачей:
Sub SortSheets() Dim I As Integer, J As Integer For I = 1 To Sheets.Count - 1 For J = I + 1 To Sheets.Count If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then Sheets(J).Move Before:=Sheets(I) End If Next J Next I End Sub
Этот макрос работает, если в вашей книге относительно мало листов. Если при запуске макроса вы заметите, что для его выполнения требуется много времени, возможно, вы захотите использовать в макросе более эффективный алгоритм сортировки. Например, следующая версия представляет собой версию, которая считывает имена всех рабочих листов в массив, сортирует массив с помощью алгоритма BubbleSort, а затем выполняет фактическую компоновку:
Sub SortSheets() Dim I As Integer Dim sMySheets() As String Dim iNumSheets As Integer iNumSheets = Sheets.Count Redim sMySheets(1 To iNumSheets) For I = 1 To iNumSheets sMySheets(I) = Sheets(I).Name Next I BubbleSort sMySheets For I = 1 To iNumSheets Sheets(sMySheets(I)).Move Before:=Sheets(I) Next I End Sub
Sub BubbleSort(sToSort() As String) Dim Lower As Integer, Upper As Integer Dim I As Integer, J As Integer, K As Integer Dim Temp As String Lower = LBound(sToSort) Upper = UBound(sToSort) For I = Lower To Upper - 1 K = I For J = I + 1 To Upper If sToSort(K) > sToSort(J) Then K = J End If Next J If I <> K Then Temp = sToSort(I) sToSort(I) = sToSort(K) sToSort(K) = Temp End If Next I End Sub
Любой, кто какое-то время программировал, знает, что BubbleSort — это хорошая процедура сортировки общего назначения, но есть и более быстрые.
Например, если у вас довольно много рабочих листов, и они начинаются очень неорганизованно, вы можете обнаружить, что алгоритм QuickSort более полезен. Все, что вам нужно сделать, чтобы изменить приведенное выше для использования QuickSort, это добавить алгоритм QuickSort в качестве подпрограммы (вы можете найти алгоритм в любой хорошей книге по программированию на Visual Basic), а затем вызвать процедуру из основного макроса SortSheets. (Это означает изменение строки, в которой теперь вызывается BubbleSort.)
Есть еще одно различие между этим вторым макросом и первым. Первый макрос не обращает внимания на регистр текста, используемого для именования ваших листов. Таким образом, мой рабочий лист будет рассматриваться так же, как мой рабочий лист. Второй макрос обращает внимание на регистр текста и выполняет сортировку соответственно. Конечно, это не особо большая проблема, поскольку Excel также не обращает внимания на регистр в именах листов.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (1959 г.) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздние версии) здесь:
link: / excelribbon-Alphabetizing_Worksheet_Tabs [Алфавитный указатель вкладок рабочего листа]
.