#2 엑셀 오류 가이드
엑셀에서 부분합(Subtotal) 기능 사용 후 원본 데이터 정렬 오류 해결
이세계의엑셀
2025. 4. 18. 22:45
반응형
Meta Description: 엑셀에서 부분합(Subtotal) 기능 사용 후 원본 데이터 정렬 오류 해결 방법을 단계별로 소개합니다. 오류 원인 분석부터 VBA 자동화 스크립트까지 한 번에 정리해 효율적인 데이터 관리와 보고서 작성에 도움을 드립니다.
첫 문단
엑셀에서 엑셀에서 부분합(Subtotal) 기능 사용 후 원본 데이터 정렬 오류 해결 문제가 자주 발생합니다. 부분합으로 그룹화한 뒤 정렬을 시도하면 행이 뒤섞이거나 요약열이 잘못 계산되는 현상이 나타나 업무 흐름을 방해합니다.
부분합과 정렬 오류가 생기는 원리
부분합(데이터 ▶ 부분합)을 설정하면 엑셀은 내부적으로 OUTLINE 레벨(윤곽)과 SUBTOTAL() 함수로 각 그룹을 감싸며, 숨김 행과 요약 행이 하나의 패키지처럼 고정됩니다.
- 정렬 명령은 표시된 셀만 정렬하려 하지만, 숨김 행까지 끌어당겨 버려 레코드가 꼬입니다.
- SUBTOTAL() 함수가 참조 범위를 잃어 “#REF!”를 뿜어내거나, 잘못된 범위를 합산해 총계가 달라집니다.
현상 | 주요 징후 | 원인 |
---|---|---|
행 섞임 | 동일 ID 끼리 떨어짐 | 숨김 행과 함께 이동 |
합계 오류 | SUBTOTAL → #REF! | 참조 영역 변형 |
필터 오류 | 일부 행 제외 | 내부 Outline 간섭 |
반응형
정렬 오류 진단 체크리스트
- 실제 숨김 행 수 확인 → Ctrl + Shift + 9로 모든 행 표시
- Outline 레벨 해제 여부 → 데이터 ▶ 개요 ▶ 그룹 해제
- SUBTOTAL 함수 에 #REF! 포함 여부 → F2로 직접 확인
- 정렬 기준 이 같은 데이터 형식인지(텍스트·숫자 혼합 여부)
팁: 오류가 반복되면 원본 시트를 복제해 테스트해 두세요.
실전 해결 방법 — 수동 접근
단계 1: 부분합 제거 뒤 정렬
- 원본 범위 선택
- 데이터 ▶ 부분합 ▶ 모두 제거 클릭 → Outline·SUBTOTAL 행 전부 삭제
- 이제 정렬(데이터 ▶ 정렬) 실행 → 행 순서가 안정적으로 변경
단계 2: 정렬 후 다시 부분합
- 정렬이 끝난 범위 유지
- 데이터 ▶ 부분합 → 그룹 필드·계산 함수·합계 대상 열 지정
- 확인 후 그룹 레벨(1 – 3)을 이용해 원하는 상세/요약 보기 전환
VBA로 자동화해 한 번에 해결하기
자주 반복된다면 매번 메뉴를 누르느라 시간 낭비가 큽니다. 다음 VBA 매크로를 개발 탭 ▶ Visual Basic 에 삽입하고 실행하면 “제거→정렬→재부분합”이 한 번에 완료됩니다.
Sub FixSubtotalSort()
Const KEY_FIELD As String = "A" '정렬 기준 열
Const FUNC_NUM As Integer = 9 '합계=9, 평균=1 등
Dim rng As Range, ws As Worksheet
Set ws = ActiveSheet
Set rng = ws.UsedRange
Application.ScreenUpdating = False
'1) 기존 부분합 제거
On Error Resume Next
ws.Outline.ShowLevels RowLevels:=8 '모든 숨김 행 표시
ws.Cells.RemoveSubtotal '부분합 삭제
On Error GoTo 0
'2) 데이터 정렬
rng.Sort Key1:=ws.Columns(KEY_FIELD), _
Order1:=xlAscending, Header:=xlYes
'3) 부분합 재적용
rng.Subtotal GroupBy:=ws.Columns(KEY_FIELD).Column, _
Function:=FUNC_NUM, TotalList:=Array(2, 3), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Application.ScreenUpdating = True
MsgBox "부분합 재적용과 정렬이 완료되었습니다!", vbInformation
End Sub
사용법
- KEY_FIELD에 “B” 처럼 원하는 열 문자 입력
- FUNC_NUM이 9면 합계, 1이면 평균, 2면 개수
- TotalList 배열에 합계가 필요한 열 인덱스를 추가
오류를 방지하기 위한 데이터 관리 팁
- 원본 유지: 가급적 “_RAW” 시트를 두고, 작업은 “_WORK” 시트에서 진행
- 테이블 기능: Ctrl + T로 테이블로 지정하면 구조가 고정돼 정렬이 안전
- 계산 열 분리: 가공용 열(예: 월별 요약)을 원본 오른쪽에 두어 범위 충돌 최소화
- 매일 사본 저장: 자동 백업 매크로로 D-1 파일 보관 → 돌이킬 수 있음
요약 및 추가 팁
이번 글에서는 엑셀에서 부분합(Subtotal) 기능 사용 후 원본 데이터 정렬 오류 해결 원인을 진단하고, 메뉴 조작·VBA 자동화 두 가지 솔루션으로 문제를 해결했습니다. 앞으로는 테이블 기능과 백업 매크로를 병행하면 같은 오류를 크게 줄일 수 있습니다. 꾸준히 연습해 엑셀에서 부분합(Subtotal) 기능 사용 후 원본 데이터 정렬 오류 해결 경험을 쌓아 보세요!
반응형