VBA Macro/VBA Excel

[엑셀] 같은 내용인 경우에 셀 병합하는 매크로

루아흐뉴마 2017. 12. 19. 22:15
반응형

매크로 설명


  • 특정 열에서 같은 내용이 반복적으로 나타나는 경우 해당 셀들을 병합하는 매크로이다.
  • 데이터 활용에 있어서 셀 병합을 선호하지 않지만, 정리를 위해서 가끔식 필요한 매크로이다.
  • 대략적으로 만들어서 빈 셀 처리 등은 문제가 발생할 수 있다. (매크로를 실행하기 전 시트를 백업해두자.)
  • 사용 조건: 예시 동영상과 같이 빈 셀이 없어야 한다. 빈 셀이 없도록 데이터를 예쁘게 만져놓아야 한다.


매크로 실행 동영상




VBA Code


Option Explicit
Sub mergeCells()
Dim i As Long
Dim marker As Long
Dim lastRow As Long
Dim mergeCol As Long

Application.DisplayAlerts = False      '병합시 발생하는 대화창 off

With ActiveSheet.UsedRange
lastRow = .Row + .Rows.Count - 1  '마지막 셀 번호
End With

For mergeCol = 1 To 3                   '각 열을 순환하는 변수 mergeCol(필요시 변경)
    i = 1                                            '각 행을 순환하는 변수 초기화
    marker = 1                                  '같은 내용이 있는 셀의 첫 번째 셀을 마킹하는 변수 초기화
    Do
        If Cells(i, mergeCol) <> Cells(i + 1, mergeCol) Then         'i 번째 셀과 그 다음 셀 값이 다른 경우, 즉 marker 셀에서 i번째 셀까지 같은 내용인 경우
            Range(Cells(marker, mergeCol), Cells(i, mergeCol)).Merge    'marker 셀에서부터 i 번째 셀까지 병합
            marker = i + 1                                                               '다음 셀을 마킹
        End If
        i = i + 1
    Loop While i <> lastRow + 1                               '마지막 셀 +1 까지 순환
Next

Application.DisplayAlerts = True       '대화창 살리기

End Sub


 Copyright (2017) Ruahneuma. All Rights Reserved.



반응형