엑셀 오름차순 자동 정렬 매크로 VBA 코드

엑셀 오름차순 자동 정렬 매크로 VBA 코드를 이용하여 표를 자동 정렬하는 방법을 알아보겠습니다. 엑셀에서 순서를 지정하거나, 작성된 데이터를 알아보기 쉽게 오름차순 또는 내림차순으로 정렬합니다. 오늘은 순서를 지정하면 정해진 순서에 따라 표를 자동으로 정렬하는 VBA코드에 대해서 알아보겠습니다.

1. 오름 차순 자동 정렬

오늘 다룰 자동 정렬 매크로는 VBA를 통해 작성하겠습니다. 작동 예시는 데이터의 앞에 순서를 나타내는 열이 있다고 가정하겠습니다. 스케줄 관리를 위해 순서를 지정하고 매크로를 실행하며 순서에 맞게 오름차순으로 정렬하는 매크로 입니다. 단 데이터는 머리글이 위치한 A1을 제외한 A2부터 정렬하도록 구성되어 있으며, A열을 기준으로 인접한 모든 행은 같이 이동합니다.

엑셀 오름차순 자동 정렬 매크로 VBA 코드-작동-예시



2) 자동 정렬 VBA 코드



3) 코드 설명

Sub SortDataWithSearchDistance()
Dim lastRow As Long : 데이터가 있는 마지막 행을 저장하는 변수
Dim lastCol As Long : 데이터가 있는 마지막 열을 저장하는 변수
Dim rng As Range : 셀 범위를 정의하는 변수
Dim searchDistance As Long : 행과 열에 대한 검색 거리를 지정하는 변수



searchDistance = 1
행과 열에 대한 검색 거리 설정. 이는 데이터를 얼마나 멀리 검색할지를 결정합니다. 빈 셀을 처리하기 위한 용도로 사용했으며 숫자를 조정하여 설정할 수 있습니다.



lastRow = Cells(Rows.Count, 1).End(xlUp).Row
데이터가 있는 마지막 행 찾기. Rows.Count는 워크시트의 전체 행 수를 반환합니다.
xlUp은 “위쪽” 방향을 나타내는 상수로, End(xlUp)는 열 A에서 마지막 비어 있지 않은 셀을 찾습니다.



lastCol = Cells(2, Columns.Count).End(xlToLeft).Column
데이터가 있는 마지막 열 찾기. 2행부터 시작하여 xlToLeft는 “왼쪽” 방향을 나타내는 상수로,
End(xlToLeft)는 2행에서 오른쪽부터 마지막 비어 있지 않은 셀을 찾습니다.



lastCol = lastCol + searchDistance
지정된 검색 거리를 고려하여 lastCol 조정



If lastRow > 1 Then
Set rng = Range(“A2”).Resize(lastRow – 1, lastCol)
A열부터 지정된 마지막 열까지의 데이터 범위 설정
Range(“A2”)는 시작 셀을 지정합니다. Resize는 범위의 크기를 조정합니다.
lastRow – 1은 행의 수를 지정하고, lastCol은 열의 수를 지정합니다.



Else
Set rng = Range(“A2”)
End If
데이터가 없는 경우 처리. 이 경우 범위를 A2로 설정합니다.



rng.Sort key1:=Range(“A2”), order1:=xlAscending, Header:=xlNo, MatchCase:=False, Orientation:=xlSortColumns
End Sub
key1은 정렬 키(열 A)를 지정
order1은 오름차순으로 설정,(xlAscending=오름차순, xlDescending=내림차순)
Orientation은 열을 기준으로 정렬함을 나타냅니다.



4) 매크로 실행

매크로를 실제로 실행해보겠습니다. 아래 영상은 위에서 작성한 매크로 실행 영상입니다. 매크로나 VBA 코드를 입력하기 위한 초기 설정은 아래 포스팅을 확인하시기 바랍니다.

엑셀 매크로 VBA 사용을 위한 개발 도구 추가

엑셀-오름차순-자동정렬-매크로

Leave a Comment