엑셀 시트 내림차순으로 정렬하기

엑셀 시트 내림차순으로 정렬하기

안녕하세요~ 엑셀 시트 내림차순으로 정렬하기에 대해 말씀드릴게요.

엑셀에서 재고 현황 시트 내에서 특정 시트(예: "갑지")는 맨 앞으로 유지하면서 나머지 시트들을 내림차순으로 정렬하는 방법과, 새 시트가 추가될 때 자동으로 정렬되도록 하는 방법을 안내하겠습니다.

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'을 열고 넣어야 합니다. 참고로, 전체 정렬 기능을 자동화하고 싶으면 이 이벤트와 앞서 제공한 정렬 서브루틴을 같이 사용하면 됩니다.

이 방법들로 재고 현황 시트는 "갑지"를 맨 앞으로 유지하면서 나머지 시트는 내림차순으로 정렬할 수 있으며, 새 시트가 추가될 때도 자동 정렬이 가능합니다.

답변 도움되셨나요? 채택 부탁드리며~ 추가 문의는 채택해주시면 답변해드립니다.

← 목록으로 돌아가기