
셀 병합
1. VBA 편집기 열기
- Excel을 실행합니다.
- ALT + F11 키를 눌러 VBA 편집기를 엽니다.
2. 매크로 코드 입력
- VBA 편집기에서 삽입(Inser)t → 모듈(Module)을 선택하여 새 모듈을 추가합니다.
- 위에서 제공한 MergeSameValuesInColumn 매크로 코드를 복사하여 붙여넣습니다.
3. 매크로 실행 방법
방법 1: VBA 편집기에서 직접 실행
- VBA 편집기에서 F5 키를 누르거나, 실행(Run) → Sub/UserForm 실행을 클릭합니다.
- MergeSameValuesInColumn을 선택하고 실행(Run) 버튼을 클릭합니다.
방법 2: Excel에서 단축키를 사용하여 실행
- ALT + F8을 눌러 매크로 목록 창을 엽니다.
- MergeSameValuesInColumn을 선택하고 실행(Run) 버튼을 클릭합니다.
방법 3: 리본 메뉴에 버튼 추가하여 실행
- Excel에서 파일 → 옵션 → 리본 사용자 지정으로 이동합니다.
- 오른쪽에서 새 그룹 추가 후, 매크로 목록에서 MergeSameValuesInColumn을 선택하여 추가합니다.
- 리본 메뉴에서 생성된 버튼을 클릭하면 매크로가 실행됩니다.
4. 매크로 사용 방법
- 병합하고 싶은 열(column)의 셀들을 선택합니다. (예: A열을 선택)
- MergeSameValuesInColumn 매크로를 실행합니다.
- 동일한 값이 연속된 경우 자동으로 병합됩니다.
5. 주의 사항
- 매크로를 실행하기 전에 병합할 셀을 선택해야 합니다.
- 병합된 셀들의 세로 정렬이 중앙(xlCenter) 으로 자동 설정됩니다.
- 매크로 실행 시 Excel 경고 메시지가 비활성화(DisplayAlerts = False) 되므로, 의도치 않은 병합이 발생하지 않도록 신중하게 실행하세요.
추가 TIP
- 단축키 등록을 원하면 ALT + F8에서 매크로 선택 후 옵션(Options)을 클릭하여 원하는 단축키(예: CTRL + M)를 설정하세요.
- 실행 취소(Undo) 기능이 작동하지 않으므로, 매크로 실행 전 백업을 권장합니다.
이제 VBA 매크로를 실행하여 동일한 값이 연속된 열을 쉽게 병합할 수 있습니다! 🚀
Sub MergeSameValuesInColumn()
Dim targetRange As Range ' 사용자가 선택한 범위
Dim currentCell As Range ' 현재 처리 중인 셀
Dim totalCells As Long ' 선택된 전체 셀 개수
Dim remainingCells As Long ' 현재 셀 이후 남은 셀 개수
Dim mergeCount As Long ' 병합할 셀 개수
Dim cellIndex As Long ' 현재 진행 중인 셀 인덱스
Application.DisplayAlerts = False
' 선택된 범위를 가져옴
On Error Resume Next
Set targetRange = Selection
On Error GoTo 0
' 유효성 검사
If targetRange Is Nothing Then
MsgBox "영역 선택이 잘못되었습니다.", vbExclamation, "오류"
Exit Sub
End If
totalCells = targetRange.Cells.Count
' 선택된 범위 내 각 셀을 확인하며 동일한 값이 연속되면 병합
For Each currentCell In targetRange
cellIndex = cellIndex + 1
remainingCells = totalCells - cellIndex
mergeCount = 0
' 현재 셀이 비어있지 않으면 연속된 같은 값을 찾음
If Len(currentCell.Value) > 0 Then
Dim i As Long
For i = 1 To remainingCells
' 아래 셀이 현재 셀과 같으면 병합 카운트 증가
If currentCell.Offset(i, 0).Value = currentCell.Value Then
mergeCount = mergeCount + 1
Else
Exit For
End If
Next i
' 연속된 동일한 값이 있으면 병합 실행
If mergeCount > 0 Then
Range(currentCell, currentCell.Offset(mergeCount, 0)).Merge
End If
End If
Next currentCell
' 병합된 셀들의 세로 정렬을 중앙으로 설정
targetRange.VerticalAlignment = xlCenter
Application.DisplayAlerts = True
End Sub
|