- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 엑셀에서 병합된 셀 때문에 정렬이 불가하거나 결과가 왜곡되는 문제를 근본적으로 해결하고, 병합 해제 이후 빈 셀을 정확히 채운 다음 안전하게 정렬하는 표준 절차와 자동화 방법을 실무 수준으로 제시하는 것이다.
왜 병합셀은 정렬을 방해하는가
병합된 셀은 범위 내 데이터의 행·열 구조를 깨뜨리므로 정렬, 필터, 피벗테이블, 파워쿼리, 수식 참조에서 예외 상황을 만든다. 병합 영역의 윗셀만 값을 보유하고 나머지는 빈칸으로 간주되므로 정렬 시 상대 위치가 보장되지 않다. 사용자가 보기에 같은 값으로 보이나 엑셀은 빈값으로 인식하므로 정렬 키가 일관되게 적용되지 않는다.
병합셀 빠르게 찾기와 일괄 해제
- 범위를 선택하거나 전체 시트를 선택한다.
- 홈 > 맞춤 그룹에서 병합하고 가운데 맞춤 옆 화살표를 눌러 셀 병합 취소 를 클릭한다.
- 병합 위치를 먼저 파악하려면 찾기 및 선택 > 선택 영역에서 찾기 를 열고 옵션 에서 서식 을 눌러 맞춤 > 가로/세로 맞춤: 병합됨 조건을 지정하여 위치를 점검한다.
병합 해제 후 빈셀 채우기 5가지 정석
방법 1: 빈 셀만 선택 후 한 번에 채우기(Go To Special)
- 그룹 열을 포함한 범위를 선택한다.
- F5 또는 Ctrl+G 를 눌러 이동 대화상자를 연 뒤 옵션 을 클릭한다.
- 빈 셀 을 선택하고 확인한다.
- 수식 입력줄에 =위쪽셀 (예: 활성 셀이 A3이면 =A2 )을 입력한다.
- Ctrl+Enter 로 모든 선택된 빈 셀에 동시에 적용한다.
- 값 고정을 위해 복사 > 선택하여 붙여넣기 > 값 을 실행한다.
방법 2: 표 개체와 채우기
- 범위를 표로 변환한다( Ctrl+T )
- 그룹 열을 선택한 뒤 F5 > 옵션 > 빈 셀 을 선택한다.
- =위쪽셀 입력 후 Ctrl+Enter 로 채웁니다.
- 표에서는 이후 정렬, 슬라이서, 부분합 등의 연계 작업이 안전하게 동작한다.
방법 3: 보조열 수식으로 채우기
원본을 보존해야 할 때는 보조열을 만들어 아래 수식을 적용한 뒤 값으로 고정한다.
=IF(A2="",A1,A2)
여러 열을 동시에 채워야 하면 각 열에 동일 원리를 적용한다.
방법 4: 파워쿼리로 구조화(권장)
- 범위를 데이터 > 테이블/범위에서 로 불러온다.
- 쿼리 편집기에서 그룹 열을 선택하고 변환 > 채우기 > 아래로 를 실행한다.
- 필요하면 다른 차원 열도 동일하게 채운 뒤 닫기 및 로드 를 실행한다.
방법 5: VBA로 일괄 처리
반복 업무라면 매크로를 작성해 병합 해제와 채우기, 정렬까지 자동화한다.
Sub UnmergeFillThenSort() Dim rng As Range, c As Range, lastRow As Long, lastCol As Long Set rng = Selection If rng Is Nothing Then Exit Sub
'1) 병합 해제
rng.UnMerge
'2) 채우기: 각 열별 위쪽 값으로 빈칸 채우기
lastRow = rng.Rows(rng.Rows.Count).Row
lastCol = rng.Columns(rng.Columns.Count).Column
Dim col As Long, r As Long
For col = rng.Column To lastCol
For r = rng.Row + 1 To lastRow
If Cells(r, col).Value = "" Then
Cells(r, col).Value = Cells(r - 1, col).Value
End If
Next r
Next col
'3) 정렬: 예시로 첫 번째 키는 A열 오름차순, 두 번째 키는 B열 오름차순
With rng.CurrentRegion
.Sort Key1:=.Columns(1), Order1:=xlAscending, _
Key2:=.Columns(2), Order2:=xlAscending, Header:=xlYes
End With
End Sub
정렬을 위한 안전한 표준 절차
- 범위 확정 을 위해 빈 열·빈 행을 제거한다.
- 병합 해제 를 먼저 수행한다.
- 빈셀 채우기 를 통해 그룹 열의 누락값을 보정한다.
- 표로 변환 (Ctrl+T)하여 헤더를 명확히 한다.
- 정렬 대화상자에서 내 데이터에 머리글 행이 있습니다 를 확인한다.
- 첫 번째 키는 가장 상위 그룹, 두 번째 키는 하위 구분, 세 번째 키는 일자·번호 등으로 지정한다.
- 필요 시 사용자 지정 목록 으로 부서·등급 등 도메인 순서를 정의한다.
사용자 지정 목록으로 현업 순서 유지
등급(상, 중, 하), 상태(대기, 진행, 완료) 등의 비알파벳 순서를 보장하려면 다음을 사용한다.
- 파일 > 옵션 > 고급 > 일반 > 사용자 지정 목록 편집 을 연다.
- 목록 항목에 원하는 순서를 줄바꿈으로 입력하고 추가한다.
- 정렬에서 순서 를 사용자 지정 목록 으로 선택한다.
검증 체크리스트
| 항목 | 체크 포인트 | 합격 기준 |
|---|---|---|
| 병합 해제 | UsedRange에 병합 없음 | 병합된 셀 수 = 0 |
| 빈셀 채우기 | 그룹 열의 빈칸 제거 | COUNTBLANK=0 |
| 머리글 인식 | 표 헤더 올바름 | 정렬에서 헤더 자동 감지 |
| 정렬 규칙 | 다중 키 순서 정의 | 요구 순서와 동일 |
| 재현성 | 매크로·쿼리로 자동화 | 반복 실행 결과 동일 |
대용량 데이터 권장 워크플로우
- 원본 시트를 그대로 두고 파워쿼리 로 불러온다.
- 채우기 아래로 를 모든 그룹 열에 적용한다.
- 데이터 형식을 선언하고 필요 시 트림·중복 제거를 수행한다.
- 출력 테이블에서 다중 키 정렬 후 보고서 범위를 연결한다.
공급망·제조 현장의 전형 사례
라인 스케줄, 품번, 작업지시가 병합된 달력형 시트로 제공되는 경우가 있다. 이때 병합 해제 후 품번·공정·차수 열을 채운 뒤 날짜 오름차순, 라인 오름차순, 차수 오름차순으로 정렬하면 투입 순서가 재현 가능해진다. 납기 우선순위를 사용자 지정 목록으로 두어 현업 규칙을 유지한다.
윈도우와 맥의 경로 차이
| 작업 | Windows | Mac |
|---|---|---|
| 병합 해제 | 홈 > 병합하고 가운데 맞춤 > 셀 병합 취소 | 홈 > 병합 및 가운데 맞춤 > 병합 해제 |
| 빈 셀 선택 | F5 > 옵션 > 빈 셀 | Cmd+G > 옵션 > 빈 셀 |
| 표 만들기 | Ctrl+T | Cmd+T |
| 붙여넣기 값 | Ctrl+Alt+V > 값 | Ctrl+Cmd+V > 값 |
오류와 예방법
- 정렬 후 그룹이 섞임 이다. 빈셀을 채우지 않은 상태에서 정렬했기 때문이다. 즉시 실행 취소 후 채우기를 먼저 수행한다.
- 부분합 계산 오류 이다. 병합 흔적이 남아 표 범위가 끊겼기 때문이다. UsedRange 기준으로 병합을 재점검한다.
- 피벗테이블 그룹화 실패 이다. 채우기 누락으로 빈 값이 포함되었기 때문이다. 원본에서 빈값 제거 후 새로고침한다.
Office Script(웹용 엑셀) 자동화 예시
브라우저 환경에서 동일한 작업을 자동화할 수 있다.
function main(workbook: ExcelScript.Workbook) { const sheet = workbook.getActiveWorksheet(); const used = sheet.getUsedRange(); //
1) 병합 해제 used.unmerge(false); //
2) 열별 위쪽 값으로 채우기 const rows = used.getRowCount(); const cols = used.getColumnCount(); for (let c = 0; c < cols; c++) { for (let r = 1; r < rows; r++) { const cell = used.getCell(r, c); if (cell.getValue() === "") { cell.setValue(used.getCell(r - 1, c).getValue()); } } } //
3) A열, B열 기준 오름차순 정렬 used.getSort().apply([{ key: 0, ascending: true }, { key: 1, ascending: true }]); }
실무 체커 함수 예시
정렬 전 검사에 사용할 수 있다.
/* 병합 여부 점검: 수식 예시 */ =SUM(--GET.CELL(44,INDIRECT("rc",FALSE))) /* 이름 정의로 배열화하여 사용 */
/* 빈셀 개수 점검 */
=COUNTBLANK(그룹열범위)
/* 예상 키 일치 검증 */
=IF(SORTBY(예상범위,키1,1,키2,1)=정렬결과,"OK","NG")
방법 비교 요약
| 방법 | 장점 | 단점 | 권장 상황 |
|---|---|---|---|
| Go To Special 채우기 | 빠르고 직관적이다 | 실수로 수식 고정 누락 가능하다 | 소형 데이터 단발성 처리 |
| 표(Ctrl+T) | 정렬·필터 안정적이다 | 기존 서식 재조정 필요하다 | 추가 분석·보고 연계 |
| 보조열 수식 | 원본 보존 가능하다 | 열 증가로 관리 복잡하다 | 감사 추적 필요 |
| 파워쿼리 | 재현성과 대용량 안정성이 높다 | 초기 학습이 필요하다 | 주기적 데이터 갱신 |
| VBA/Script | 완전 자동화가 가능하다 | 배포·보안 정책 고려 필요하다 | 반복 업무와 팀 공유 |
표준 운영 절차(SOP) 샘플
- 파일 백업본을 생성한다.
- 사용 범위를 표준 머리글 구조로 정리한다.
- UsedRange 단위로 병합 해제를 실행한다.
- 그룹 열에 대한 빈셀 채우기를 완료한다.
- 표로 변환하고 데이터 형식을 지정한다.
- 사용자 지정 목록을 준비한다.
- 정렬 키를 상위→하위 우선순으로 지정한다.
- 검증 체크리스트를 통과한다.
- 저장 시 값 붙여넣기로 고정한다.
FAQ
병합을 유지한 채로 정렬할 수 있나?
권장하지 않는다. 시각적 구분이 필요하면 조건부서식 경계선과 그룹화 기능으로 대체하는 것이 안전하다.
빈셀 채우기에서 숫자 서식이 깨진다. 어떻게 하나?
채우기 후 값 붙여넣기 전에 대상 열의 표시 형식을 먼저 지정한 뒤 값을 고정하면 된다.
첫 행이 비어 있으면 어떻게 하나?
첫 행은 기준값이므로 반드시 실제 값을 채운 뒤 아래로 채우기를 실행해야 한다.
파워쿼리 채우기와 수식 채우기의 차이는 무엇인가?
파워쿼리는 원본을 변경하지 않고 결과만 갱신하므로 재현성이 높다. 반면 수식은 시트 내에서 직접 데이터를 변형하므로 값 고정 등 추가 절차가 필요하다.
정렬 후 합계가 달라졌다. 왜 그런가?
정렬 후 합계가 달라졌다. 왜 그런가?
병합 해제 전 합계가 병합된 셀 기준으로 작성되었을 수 있다. 정렬 전후 합계 범위를 표의 열 단위로 재정의해야 한다.