안녕하세요.
시트명 기준으로 시트를 정렬하는 엑셀 기본 기능은 없습니다.
그래서 사용자가 직접 마우스로 끌어서 원하는 위치에 넣는 방법이 기본입니다.
그런데 정렬해야 하는 시트가 많거나 자주 해야 한다면 마우스로 끌어 옮기는 방법은 너무 힘듭니다.
이 경우엔 VBA로 간단하게 처리할 수 있습니다.
실습 파일 다운로드
VBA 파일 다운로드
현재는 시트명 순서대로 정렬되어 있지 않습니다.

다운로드한 VBA 파일을 더블클릭해서 메모장으로 열고, 전체 선택해서 복사합니다.

Excel 파일에서 <Alt + F11>을 눌러 VBE(VBA Editor)를 실행합니다.

[삽입]-[모듈]을 선택합니다.

[붙여넣기] 합니다.

<F5>를 누르거나 [실행]을 누릅니다.

시트명 기준으로 정렬됩니다.

VBA로 실행하기 전 주의할 점이 있습니다.
VBA로 한 작업은 되돌리기가 되지 않으므로 이전 사태로 시트를 배열하고 싶다면 미리 이전 상태를 기록해 두고 직접 끌어서 맞춰야 합니다.
필요한 작업이 끝났으므로 삽입한 모듈은 지웁니다.
프로젝트 탐색기의 모듈에서 마우스 오른쪽 클릭해서 [Module1 제거]를 선택합니다.

VBA 모듈을 제거하지 않으면 파일을 저장할 때 Excel 매크로 사용 통합 문서로 저장할지 물어보는 대화상자가 표시되어 불편하고, Excel 매크로 사용 통합 문서로 저장하면 일반적인 Excel 사용할 때 제한이 생길 수 있습니다.
시트명 기준으로 정렬하는 작업을 다시하려고 할 때는 같은 방법으로 정렬하면 됩니다.
만약 내림차순으로 정렬하려면 VBA 코드 중 20번 행 등호를 보다 적다(<)로 바꾸면 됩니다.
Sub SheetNameSort()
Dim SName() As String
Dim i As Integer, j As Integer
Dim z As Integer
Dim Temp As String
z = Sheets.Count
ReDim SName(z)
i = 1
For Each s In Sheets
SName(i) = s.Name
i = i + 1
Next
For i = 1 To z - 1
For j = i + 1 To z
If SName(i) > SName(j) Then
Temp = SName(i)
SName(i) = SName(j)
SName(j) = Temp
End If
Next j
Next i
For i = z To 1 Step -1
Sheets(SName(i)).Move before:=Sheets(1)
Next i
End Sub

필요하신 분께 도움이 되길 바랍니다.
'매크로&VBA' 카테고리의 다른 글
| 일정한 시간 간격으로 매크로 실행하기 (5) | 2024.08.22 |
|---|---|
| 이번 달 날짜 수만큼 시트를 만들고 일요일은 탭 색을 빨강으로 바꾸기 (0) | 2024.01.04 |
| 월별 데이터를 각 시트로 한꺼번에 나누는 원초적인 매크로 (0) | 2023.08.18 |
| 월별로 분리된 시트를 각각 파일로 저장하기 (0) | 2023.07.22 |
| 월별 데이터를 각 시트로 한꺼번에 나누는 매크로 (1) | 2023.07.19 |

