Pat은 워크 북에서 워크 시트를 알파벳순으로 빠르게 정렬 할 수있는 방법이 있는지 궁금합니다. 이 작업을 수행하는 기본 제공 방법은 없지만 매크로를 사용하여 정렬을 수행 할 수 있습니다. 이 팁에서는 두 가지 접근 방식을 제시합니다. 첫 번째는 정렬을 수행하는 간단한 방법을 제공합니다.

Sub SortSheets1()

Dim I As Integer     Dim 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 SortSheets2()

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     Dim Upper As Integer     Dim I As Integer     Dim J As Integer     Dim 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가 호출되는 줄을 변경하는 것을 의미합니다.)

이 두 번째 매크로와 첫 번째 매크로 사이에는 또 다른 차이점이 있습니다. 첫 번째 매크로는 워크 시트의 이름을 지정하는 데 사용 된 텍스트의 대소 문자에주의를 기울이지 않습니다. 따라서 MyWorksheet는 MYWORKsheet와 동일하게 표시됩니다. 두 번째 매크로는 텍스트 대소 문자에주의를 기울이고 그에 따라 정렬합니다. 물론 이것은 Excel이 워크 시트 이름의 대소 문자에주의를 기울이지 않기 때문에 특별히 큰 문제는 아닙니다.

참고 : 위에 표시된 BubbleSort 루틴은 본질적으로 범용입니다. 즉, 워크 시트 탭의 이름을 정렬하는 것이 아니라 모든 배열을 정렬하는 데 사용할 수 있습니다.

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (13440)은 Microsoft Excel 2007, 2010, 2013 및 2016에 적용됩니다.

Excel의 이전 메뉴 인터페이스에 대한이 팁의 버전은 여기에서 찾을 수 있습니다.

link : / excel-Alphabetizing_Worksheet_Tabs [Alphabetizing Worksheet Tabs].