엑셀 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를 활용하면 데이터를 깔끔하게 정리하고 자동화할 수 있습니다! 🚀