- 최초 작성일: 2007-08-29
- 최종 수정일: 2026-09-30
- 조회수: 13 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 병합된 셀 핸들링 테크닉
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
엑셀로 작업을 하다보면 다음과 같은 눈에 익은(하지만 결코 반갑지는 않은!) 오류 메시지를 접하는 경우가 가끔 있습니다.
대화 상자의 내용으로 미루어 짐작할 수 있듯, 이것은 셀 병합이 되어 있는 셀(들)을 대상으로 하여 특정한 작업(예를 들면 정렬)을 하고자 할 때 나타나는 오류입니다.
그렇다면 이러한 오류가 발생하였을 경우에는 어떻게 대처해야 할까요?
아마도… 병합된 영역을 찾아서 셀 병합을 해제하고 필요한 작업(즉 정렬), 다시 병합을 하면 된다고 생각하시겠지요?
틀린 방법은 물론 아닙니다만, 그보다는 가급적 셀 병합은 사용하지 않도록 하시기 바랍니다. 사실 셀 병합 기능은 필요악, 아니 그 이상이라고 할 수 있습니다. 엑셀은 단순히 워드 프로세스 대용품이 아닌 뛰어난 '데이터 분석 도구'라는 사실을 상기해 보신다면, 그리고 그 용도에 맞게 사용하고자 하신다면 대개의 경우, 셀 병합을 하지 않고 작업하는 것이 훨씬 편하고 효율적입니다.
오늘 강좌에서는 이러한 사실을 상기시켜 드리려고 한 것은 아니고… 셀 병합과 관련하여 조금더 본질적인(?) 사항을 다루어 보고자 합니다.
그나마 엑셀 2000버전 이후부터는 융통성이 조금은 생겼습니다만, 병합된 셀이 포함된 영역에서 작업을 하는 것은 꽤나 까다롭다고 하지 아니하기가 어렵습니다.
(먼 소리지? Exceller가 더위 먹었나!)
병합된 셀 핸들링 테크닉
핵심 요약: 병합된 셀 포함 여부 확인하기
범위 안에 병합된 셀이 있는지를 확인하는 IncludeMergedCell 함수입니다. 병합된 셀이 있으면 정렬 오류나 열 선택 오류가 생길 수 있으므로 미리 확인하는 용도로 쓸 수 있습니다.
- 1단계: 범위 내 셀을 For Each로 하나씩 순환합니다.
- 2단계: MergeCells 속성이 True인 셀을 만나면 즉시 함수를 종료합니다.
- 3단계: 끝까지 없으면 병합된 셀이 없다는 결과를 반환합니다.
Step 1: 병합된 셀이 만드는 문제
예를 들어 A1:E1 셀이 병합되어 있는 상태에서,
Columns(2).Select
Columns("C:C").Select
이런 명령을 내리면 어떻게 될까요? 코딩을 한 사람은 2열 또는 3열을 선택하기 위해 이런 문장을 사용했겠지만 결과는 엉뚱하게도 두 경우 모두 A:E열 전체가 선택되어 버립니다.
대상 영역에 병합된 셀이 있는지 여부를 확인하면 이러한 오류를 사전에 방지할 수 있습니다. 아래의 노란색 셀에는 IncludeMergedCell이라는 사용자 정의 함수가 사용되었습니다.
Step 2: 코드 살펴보기
코드는 너무도 간단하여 따로 설명을 하고 말고 할 것도 없을 듯 합니다만서도…
Function IncludeMergedCell(rngXXX As Range) As String
Dim rngCell As Range
For Each rngCell In rngXXX
'MergeCells 속성은 지정한 범위에 병합된 셀이 있을 경우 True 값을 돌려줍니다.
If rngCell.MergeCells Then
IncludeMergedCell = "병합된 셀 발견!"
Exit Function
End If
Next rngCell
IncludeMergedCell = "No Merged Cell"
End Function
셀 하나씩 확인하는 이유: 여러 셀로 이루어진 범위에서 MergeCells 속성은 범위 전체가 병합되어 있으면 True, 전혀 없으면 False, 병합된 셀과 아닌 셀이 섞여 있으면 Null을 돌려줍니다. 그래서 위 함수처럼 셀을 하나씩 순환하며 확인하는 방식이 안전합니다.
이 코드(사용자 정의 함수)를 다른 프로시저에 포함하여 병합된 셀이 있는지 확인하고 후속 작업을 진행하시면 되겠습니다.
이런 방법을 알려드리긴 했습니다만, 셀 병합이 된 상태에서는 정렬, 필터, 피벗 테이블 등과 같은 엑셀의 다양한 분석 도구들이 제 기능을 발휘하기 어려우며, 뜻하지 않은 곤란을 겪게 될 수 있습니다.
셀 병합을 할 때에는 신중, 또 신중하시기 바랍니다.
오늘은 여기까지…
정리 — 병합된 셀 확인 코드 핵심
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 범위 순환 | For Each rngCell In rngXXX | 범위의 모든 셀을 하나씩 확인 |
| 병합 여부 | rngCell.MergeCells | 병합된 셀이면 True |
| 즉시 종료 | Exit Function | 병합된 셀을 찾으면 더 이상 확인하지 않음 |
| 결과 문자열 | "병합된 셀 발견!" / "No Merged Cell" | 확인 결과 반환 |
자주 묻는 질문 (FAQ)
Q1. "이 작업을 수행하려면 병합하려는 셀의 크기가 동일해야 합니다" 오류는 왜 생기나요?
병합된 셀이 포함된 영역을 대상으로 정렬 같은 작업을 하려 할 때 나타나는 오류입니다. 병합된 셀의 크기가 서로 다르면 작업을 수행할 수 없기 때문입니다.
Q2. 병합된 셀이 있는 열을 Columns로 선택하면 어떻게 되나요?
A1:E1이 병합되어 있는 상태에서 Columns(2).Select를 실행해도 A:E열 전체가 선택됩니다. 병합된 셀 때문에 선택 영역이 확장되기 때문입니다.
Q3. 병합을 쓰지 않고 가운데 정렬처럼 보이게 할 수 있나요?
네, 가운데 맞춤 대신 '선택 영역의 가운데로' 맞춤을 사용하면 셀을 병합하지 않고도 여러 셀에 걸쳐 가운데에 표시할 수 있습니다.
마치며
셀 병합은 정렬, 필터, 피벗 테이블 등 분석 도구의 기능을 떨어뜨리는 원인이 됩니다. 병합할 때는 신중, 또 신중하시기 바랍니다.