엑셀 시트 내림차순으로 정렬하기
안녕하세요~ 엑셀 시트 내림차순으로 정렬하기에 대해 말씀드릴게요.
엑셀에서 재고 현황 시트 내에서 특정 시트(예: "갑지")는 맨 앞으로 유지하면서 나머지 시트들을 내림차순으로 정렬하는 방법과, 새 시트가 추가될 때 자동으로 정렬되도록 하는 방법을 안내하겠습니다.
1. 특정 시트(갑지)를 맨 앞으로 유지하고 나머지 시트 정렬하기
이 방법은 VBA(매크로)를 사용하는 것이 가장 효과적입니다. 아래 VBA 코드를 사용하면 "갑지"는 맨 앞으로 유지하고, 나머지 시트들을 이름 기준으로 내림차순으로 정렬할 수 있습니다.
VBA 코드 예제:
`vba
Sub SortSheetsExceptFirst()
Dim ws As Worksheet
Dim sheetNames() As String
Dim i As Integer, j As Integer
Dim temp As String
Dim sheetCount As Integer
sheetCount = ThisWorkbook.Sheets.Count
ReDim sheetNames(1 To sheetCount - 1) ' "갑지" 제외 시트 이름 저장 배열
' "갑지"는 제외하고 나머지 시트 이름 배열에 저장
i = 1
For Each ws In ThisWorkbook.Sheets
If ws.Name <> "갑지" Then
sheetNames(i) = ws.Name
i = i + 1
End If
Next ws
' 내림차순 정렬 (버블 정렬 예제)
For i = 1 To UBound(sheetNames) - 1
For j = i + 1 To UBound(sheetNames)
If sheetNames(i) < sheetNames(j) Then
temp = sheetNames(i)
sheetNames(i) = sheetNames(j)
sheetNames(j) = temp
End If
Next j
Next i
' 정렬된 이름 순서로 시트 재배치
For i = 1 To UBound(sheetNames)
ThisWorkbook.Sheets(sheetNames(i)).Move Before:=ThisWorkbook.Sheets(i + 1)
Next i
' "갑지" 시트는 맨 앞으로 유지
ThisWorkbook.Sheets("갑지").Move Before:=ThisWorkbook.Sheets(1)
End Sub
`
이 코드를 실행하면 "갑지" 시트는 맨 앞으로 유지되고, 나머지 시트는 이름 기준으로 내림차순으로 정렬됩니다.
2. 새 시트 추가 시 자동으로 정렬하는 방법
이 역시 VBA를 사용해서 워크북에 시트가 추가될 때마다 자동으로 정렬되도록 설정할 수 있습니다. 아래는 워크시트가 추가될 때마다 정렬하는 이벤트 코드입니다.
이벤트 코드 (이벤트는 ThisWorkbook에 넣어야 함):
`vba
Private Sub Workbook_SheetAdded(ByVal Sh As Object)
Call SortSheetsExceptFirst
End Sub
`
이 코드를 붙여넣기 위해서는 VBA 편집기에서 'ThisWorkbook'을 열고 넣어야 합니다. 참고로, 전체 정렬 기능을 자동화하고 싶으면 이 이벤트와 앞서 제공한 정렬 서브루틴을 같이 사용하면 됩니다.
이 방법들로 재고 현황 시트는 "갑지"를 맨 앞으로 유지하면서 나머지 시트는 내림차순으로 정렬할 수 있으며, 새 시트가 추가될 때도 자동 정렬이 가능합니다.
답변 도움되셨나요? 채택 부탁드리며~ 추가 문의는 채택해주시면 답변해드립니다.