Range 개체

Merge 메서드

노만e 2025. 3. 11. 06:10

엑셀 VBA에서 Merge 메서드는 여러 개의 셀을 하나로 병합할 때 사용됩니다.

병합된 셀은 하나의 큰 셀처럼 동작하며, 데이터는 병합된 셀의 왼쪽 상단(첫 번째) 셀에 유지됩니다.


1. 기본 문법

Range("병합할 셀 범위").Merge

📌 여러 개의 셀을 하나로 병합

Range("병합할 셀 범위").MergeCells = True

📌 Merge와 동일한 효과


2. 기본 예제

📌 A1:B2 범위 병합

Sub 셀_병합()
Range("A1:B2").Merge
End Sub

📌 A1:B2를 하나의 셀로 병합


📌 병합된 셀에 값 입력

Sub 병합된셀_값입력()
With Range("A1:B2")
.Merge
.Value = "병합된 셀"
End With
End Sub

📌 A1:B2를 병합한 후 "병합된 셀" 입력


3. 병합 해제

📌 병합된 셀을 해제

Sub 셀_병합해제()
Range("A1:B2").UnMerge
End Sub

📌 A1:B2 범위의 병합을 해제


4. 병합 여부 확인

📌 셀 병합 여부를 확인하여 병합된 경우 해제

Sub 병합여부_확인_해제()
Dim rng As Range
Set rng = Range("A1:B2")
If rng.MergeCells Then
rng.UnMerge
MsgBox "병합이 해제되었습니다."
Else
MsgBox "이미 병합이 해제된 상태입니다."
End If
End Sub

📌 A1:B2가 병합되어 있으면 해제하고 메시지 표시


5. 병합을 자동화 (특정 열 병합)

📌 A열의 각 그룹(연속된 동일 값) 병합

Sub A열_그룹_병합()
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' 마지막 행 찾기
For i = lastRow To 2 Step -1
If Cells(i, 1).Value = Cells(i - 1, 1).Value Then
Range(Cells(i - 1, 1), Cells(i, 1)).Merge
End If
Next i
End Sub

📌 A열에서 동일한 값이 있는 연속된 행을 병합


📌 특정 범위에서 동일 값 병합

Sub 특정범위_병합()
Dim rng As Range, cell As Range
Set rng = Range("A1:A10")
For Each cell In rng
If cell.Value = cell.Offset(1, 0).Value Then
Range(cell, cell.Offset(1, 0)).Merge
End If
Next cell
End Sub

📌 A1:A10 범위 내 연속된 동일 값 병합


6. 병합 시 정렬 유지

📌 병합 후 가운데 정렬 적용

Sub 병합후_가운데정렬()
With Range("A1:B2")
.Merge
.HorizontalAlignment = xlCenter ' 가로 중앙 정렬
.VerticalAlignment = xlCenter ' 세로 중앙 정렬
End With
End Sub

📌 병합 후 가로·세로 중앙 정렬 설정


7. 병합된 셀에서 값 가져오기

📌 병합된 첫 번째 셀의 값 가져오기

Sub 병합된셀_값출력()
Dim rng As Range
Set rng = Range("A1")
If rng.MergeCells Then
MsgBox "병합된 값: " & rng.MergeArea.Cells(1, 1).Value
Else
MsgBox "병합되지 않은 셀입니다."
End If
End Sub

📌 병합된 범위에서 첫 번째 셀의 값 가져오기


8. 병합된 셀을 개별 셀로 복사

Sub 병합된셀_해제_후_복사()
Dim rng As Range
Set rng = Range("A1:B2")
If rng.MergeCells Then
rng.UnMerge
rng.Cells(1, 1).Copy
rng.PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
End If
End Sub

📌 병합 해제 후 첫 번째 셀 값을 복사하여 나머지 셀에 채우기


📝 정리

기능
VBA 코드
셀 병합
Range("A1:B2").Merge
병합 해제
Range("A1:B2").UnMerge
병합 후 값 입력
.Merge : .Value = "병합된 셀"
병합 여부 확인
If rng.MergeCells Then ...
A열 동일 값 병합
Range(Cells(i - 1, 1), Cells(i, 1)).Merge
병합 후 정렬 유지
.HorizontalAlignment = xlCenter
병합된 셀의 값 가져오기
rng.MergeArea.Cells(1,1).Value
병합 해제 후 개별 셀에 값 복사
.UnMerge : .PasteSpecial Paste:=xlPasteAll

🔥 VBA의 Merge를 활용하면 데이터를 깔끔하게 정리하고 자동화할 수 있습니다! 🚀