날짜 데이터가 포함된 자료를 다룰 때 사용자들은 대부분 엑셀에서 날짜를 기준으로 행을 정렬합니다. 정렬 및 필터(Sort & Filter), 필터(Filter), 사용자 지정 정렬(Custom Sort), 마우스 우클릭 메뉴 등의 기능과 MONTH, YEAR, SORT, SORTBY 같은 다양한 함수, 그리고 VBA 매크로까지 활용하면 날짜 기준 정렬을 훨씬 효율적으로 수행할 수 있습니다.
예를 들어 특정 날짜에 발생한 총 비용(Total Cost)이 저장된 데이터셋이 있다고 가정해 보겠습니다. 이 데이터 전체를 날짜 기준으로 정렬하고 싶은 상황입니다.

이 글에서는 위 데이터셋을 날짜별로 정렬할 수 있는 여러 가지 기능, 함수, 그리고 VBA 매크로 활용법을 단계별로 소개합니다.
예제 파일 다운로드
엑셀에서 날짜별로 행을 정렬하는 8가지 쉬운 방법
정렬은 데이터셋을 파악하는 데 필수적인 도구입니다. 날짜 기준으로 정렬하면 방대한 데이터도 한눈에 이해하기 쉬워집니다. 엑셀에서는 데이터를 제자리에 정렬하거나 다른 위치에 새롭게 정렬된 결과를 출력하는 등 다양한 방식으로 날짜 정렬이 가능합니다. 아래에서 소개하는 방법 중 상황에 맞는 것을 골라 활용해 보세요.
방법 1: 정렬 및 필터(Sort & Filter) 기능 사용
엑셀은 홈 탭과 데이터 탭 양쪽에서 정렬 및 필터 기능을 제공합니다. 어느 쪽을 사용해도 날짜 기준으로 행을 정렬할 수 있습니다.
🔺 정렬 및 필터를 적용하려면 홈 탭 > 편집 그룹의 정렬 및 필터 클릭 > 오래된 날짜순으로 정렬(A⟶Z)을 선택합니다. 필요에 따라 최신 날짜순으로 정렬(Z⟶A)을 선택해도 됩니다.

🔼 또는 데이터 탭 > 정렬 및 필터 그룹에서 (A⟶Z) 또는 (Z⟶A) 버튼을 클릭하는 방법도 있습니다.

🔺 두 경우 모두 정렬 범위를 확장할지 묻는 정렬 경고 창이 나타납니다. 현재 선택 영역 계속을 선택하면 날짜 열만 정렬되어 데이터의 연관성이 깨지므로 반드시 선택 영역 확장을 고른 뒤 정렬을 클릭하세요.

🔼 어떤 경로를 사용했든 결과는 동일합니다. 아래 이미지처럼 데이터셋 전체가 날짜 순(오래된 날짜 → 최신 날짜)으로 정렬됩니다.

참고로 단축키 ALT+A+S+A는 오래된 날짜순 정렬, ALT+A+S+D는 최신 날짜순 정렬을 실행합니다.
함께 읽기: [해결법] 엑셀에서 정렬 및 필터가 작동하지 않을 때
방법 2: 마우스 오른쪽 버튼(컨텍스트 메뉴)으로 정렬
🔺 데이터셋에서 날짜(Date) 열을 선택한 후 마우스 오른쪽 버튼을 클릭합니다. 컨텍스트 메뉴가 나타나면 정렬 > 오래된 날짜순으로 정렬 또는 최신 날짜순으로 정렬을 선택합니다.

🔺 정렬 경고 창이 뜨면 선택 영역 확장을 선택하고 정렬을 클릭합니다. 만약 현재 선택 영역 계속을 누르면 날짜 열만 정렬되어 데이터가 어긋나는 실수를 하게 되니 주의하세요.

🔼 그러면 아래 그림과 같이 선택한 기준(오래된 날짜순 또는 최신 날짜순)에 따라 데이터가 깔끔하게 정렬됩니다.

함께 읽기: 엑셀에서 열이 아닌 행 기준으로 데이터 정렬하는 방법 (2가지)
방법 3: 필터(Filter) 기능으로 정렬
정렬 및 필터와 마찬가지로 필터 기능만으로도 날짜 기준 정렬이 가능합니다.
🔺 먼저 홈 탭 > 편집 그룹의 정렬 및 필터 클릭 > 필터를 선택해 데이터셋에 필터를 적용합니다.

🔺 이후 Date 열 머리글 옆의 필터 아이콘을 클릭합니다. 필터 명령 상자가 나타나면 오래된 날짜순으로 정렬 또는 최신 날짜순으로 정렬 중 원하는 옵션을 고르면 됩니다.

🔼 이제 데이터셋이 원하는 기준대로 정렬되었는지 확인할 수 있습니다.

함께 읽기: 엑셀에서 정렬과 필터의 차이점
방법 4: 사용자 지정 정렬(Custom Sort) 활용
사용자 지정 정렬 옵션은 셀의 값, 색상, 글꼴 색, 조건부 서식 아이콘을 기준으로 임의의 열 머리글을 지정해 정렬할 수 있는 강력한 기능입니다. 날짜 정렬 시에는 오래된 날짜순, 최신 날짜순, 사용자 지정 목록 옵션을 제공합니다.
🔺 홈 탭 > 편집 그룹의 정렬 및 필터 클릭 > 사용자 지정 정렬을 선택합니다.

🔺 정렬 대화 상자가 열리면 다음과 같이 설정합니다.
⧫ 정렬 기준: Order Date 선택
⧫ 정렬 방법: 셀 값 선택
⧫ 순서: 오래된 날짜순 또는 최신 날짜순 선택
마지막으로 확인을 클릭합니다.

🔼 잠시 후 아래 그림처럼 데이터셋 전체가 설정한 기준대로 정렬된 것을 확인할 수 있습니다.

함께 읽기: 엑셀에서 사용자 지정 정렬 목록 만드는 방법
관련 글
- 엑셀에서 데이터 입력 시 자동 정렬하는 방법 (3가지)
- 엑셀에서 성(Last Name) 기준으로 정렬하는 방법 (4가지)
- 엑셀에서 행을 함께 유지하며 열 정렬하기
- 엑셀에서 값 기준으로 열 정렬하는 방법 (5가지)
- 엑셀에서 무작위 정렬하기 (수식 + VBA)
방법 5: 함수 결과값을 이용한 날짜 정렬
MONTH, DAY 함수를 사용해 보조 열에 날짜에서 추출한 월·연도 숫자를 넣은 뒤, 그 결과값을 기준으로 데이터셋 전체를 정렬할 수 있습니다. 여기서는 MONTH 함수를 활용해 보겠습니다. 데이터 형태에 따라 YEAR 함수를 사용해도 좋습니다.
🔺 빈 셀(예: E5)에 아래 수식을 입력합니다.
=MONTH(B5)이 수식은 날짜 값에서 월(month) 숫자를 추출해 반환합니다.

🔺 채우기 핸들(Fill Handle)을 드래그해 나머지 셀에도 수식을 적용합니다.

🔺 방법 3과 같은 방식으로 데이터셋에 필터를 적용한 뒤, 필터 아이콘을 클릭해 오름차순 정렬 또는 내림차순 정렬을 선택합니다.

🔽 아래 이미지처럼 엑셀이 선택한 기준에 따라 데이터셋 전체를 정렬해 줍니다.

함께 읽기: 엑셀에서 날짜와 시간 기준으로 정렬하는 스마트한 4가지 방법
방법 6: SORT 계열 함수로 날짜별 정렬
Excel 365에서는 정렬 전용 함수 두 가지를 제공합니다. SORT와 SORTBY 함수는 특정 열을 기준으로 데이터셋을 정렬합니다. SORT 함수의 구문은 다음과 같습니다.
SORT(array, [sort_index], [sort_order], [by_col])각 인수의 의미는 다음과 같습니다.
array: 정렬할 범위 또는 배열
sort_index: 정렬 기준이 되는 열 번호. 기본값은 1. [선택]
sort_order: 정렬 순서. 오름차순 = 1, 내림차순 = -1. 기본값은 오름차순. [선택]
by_col: 열 기준 정렬 = TRUE, 행 기준 정렬 = FALSE. 기본값은 행 기준(FALSE). [선택]
🔺 아래 수식을 임의의 셀(예: H5)에 입력합니다.
=SORT(B5:F16,1,1,FALSE)수식의 각 인수는 다음과 같습니다.
array = B5:F16
sort_index = 1
sort_order = 1 (오름차순)
by_col = FALSE

🔺 ENTER 키를 누르면 수식이 실행되고, 워크시트의 새 위치에 정렬된 데이터셋 전체가 출력됩니다. 오름차순을 선택했으므로 날짜 기준으로 오름차순 배열이 완성됩니다.

🔄 SORT 함수와 달리 SORTBY 함수는 다중 수준 정렬을 지원한다는 장점이 있습니다. SORTBY 함수의 구문은 다음과 같습니다.
SORTBY(array, by_array, [sort_order], [array/order], ...)각 인수의 의미는 다음과 같습니다.
array: 정렬할 범위 또는 배열
by_array: 정렬의 기준이 되는 범위 또는 배열
sort_order: 오름차순 = 1(기본값), 내림차순 = -1
array/order: 추가 배열과 정렬 순서 쌍. [선택]
🔺 아래 수식을 빈 셀(예: H5)에 붙여넣고 ENTER를 누릅니다.
=SORTBY(B5:F16,B5:B16,1)구문과 대조해 보면 array = B5:F16, by_array = B5:B16, sort_order = 1(오름차순)입니다.

함께 읽기: 엑셀에서 여러 행을 정렬하는 방법 (2가지)
방법 7: 수식으로 자동 정렬(Auto Sort) 구현
INDEX-MATCH 수식 조합을 활용하면 날짜가 자동으로 정렬되는 구조를 만들 수 있습니다. 셀 C5에 아래 수식을 입력합니다.
=IFERROR(INDEX($B$5:$B$16, MATCH(ROWS($B$5:B5),COUNTIF($B$5:$B$16, "<="&$B$5:$B$16), 0)), "")수식 구조를 살펴보면 다음과 같습니다.
🔼 MATCH(ROWS($B$5:B5),COUNTIF($B$5:$B$16, "<="&$B$5:$B$16), 0) ➤ INDEX 함수의 row_num 역할을 합니다.
🔼 ROWS($B$5:B5) ➤ ROWS 함수를 통해 MATCH 함수의 lookup_value를 전달합니다.
🔼 COUNTIF($B$5:$B$16, "<="&$B$5:$B$16) ➤ COUNTIF 함수를 통해 MATCH 함수의 lookup_array를 전달합니다.
🔼 0 ➤ MATCH 함수의 match_type(정확히 일치)를 의미합니다.
🔺 ENTER를 누른 뒤 채우기 핸들로 나머지 셀에 수식을 복사합니다.

🔺 COUNTIF 함수 대신 RANK 함수로 날짜의 순위를 매기고, 특정 열만 가져오고 싶다면 아래 수식을 사용할 수도 있습니다.
=INDEX(B5:F16,MATCH(ROW(A1:A12),RANK(B5:B16,B5:B16,1),0),{1,2,5})이 수식은 COUNTIF 대신 RANK 함수를 사용한다는 점 외에는 앞선 수식과 인수 구조가 같으며, 마지막 부분에서 원하는 특정 열({1,2,5})만 선택해 출력할 수 있습니다.

함께 읽기: 엑셀에서 표 자동 정렬하는 방법 (5가지)
방법 8: VBA 매크로로 날짜 정렬
VBA 매크로를 사용하면 데이터셋을 날짜 기준으로 자동 정렬할 수 있습니다.
🔺 ALT+F11을 눌러 Microsoft Visual Basic 편집기를 엽니다. 왼쪽 프로젝트 창에서 해당 워크시트를 더블클릭합니다.

🔺 시트 코드 창에 아래 매크로를 붙여넣습니다.
Private Sub Worksheet_Change(ByVal Rng As Range)
On Error Resume Next
Range("B4").Sort Key1:=Range("B5"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End Sub
첫 번째 Range(즉, B4)는 데이터셋의 가장 왼쪽 위 셀을, 두 번째 Range(즉, B5)는 데이터 시작 위치를 의미합니다. 그 아래 줄은 데이터셋을 위→아래(Orientation) 방향으로 오름차순 정렬하라는 명령입니다.
🔼 매크로를 삽입한 후 워크시트로 돌아갑니다. 행을 추가·삭제하거나 ENTER 키를 누를 때마다 아래 그림처럼 데이터가 자동으로 정렬됩니다.

함께 읽기: VBA로 엑셀 표 정렬하기 (4가지 방법)
마무리
이번 글에서는 엑셀에서 날짜 기준으로 행을 정렬하는 다양한 기능과 함수, 그리고 VBA 매크로까지 총 8가지 방법을 살펴보았습니다. 내장 기능만으로도 여러 정렬 옵션을 손쉽게 활용할 수 있고, 직접 작성한 수식으로도 효율적인 정렬이 가능합니다. 특히 VBA 매크로를 활용하면 데이터가 변경될 때마다 자동으로 정렬되는 편리한 환경을 구축할 수 있습니다. 소개한 방법들이 여러분의 업무에 도움이 되길 바랍니다. 궁금한 점이나 추가하고 싶은 내용이 있다면 댓글로 남겨주세요.
관련 글
- 엑셀 VBA 정렬 함수 사용법 (8가지 예제)
- 엑셀 VBA로 배열 정렬하기 (오름차순·내림차순 모두)
- VBA로 엑셀 열 정렬하기 (4가지 방법)
- 엑셀에서 고유 목록 정렬하는 방법 (10가지)
- 엑셀에 정렬 버튼 추가하는 방법 (7가지)
- 엑셀에서 IP 주소 정렬하기 (6가지 방법)