티스토리 뷰

엑셀의 매크로를 이용해 동일한 값을 가진 셀을 병합하는 방법에 대해 이야기하려합니다.

 

데이터를 다루다 보면 엑셀에서 동일한 값을 가진 셀을 병합하는 작업을 자주 하게 됩니다. 데이터를 혼자서만 보고 혼자서만 사용한다고 한다면 사실 병합을 안한 원본 데이터를 가지고 있는게 다른 작업을 하기에 편한데요, 엑셀을 고객에게 보내야 한다거나, 혹은 상사에게 보고를 드릴때 필요하다면 보기좋게 동일한 값을 가진 셀을 병합해야만 하겠죠. 처음에야 하나씩 셀을 선택해서 병합하는게 가능할지 몰라도 그 데이터의 양이 크거나, 작업해야할 파일의 수가 많다면 눈앞이 막막해지게됩니다. 


그럼 다음과 같이 동일한 값끼리 병합을 실행해줄 매크로를 만들어보겠습니다.

 

Alt + F8 을 누르면 매크로 창이 나옵니다. 새로 만들 매크로 이름을 입력해준 후 (SameCellMerge) 만들기를 클릭해줍니다.

 

그럼 다음과 같이 새로운 창이 뜹니다. 

 

 

코드를 입력하는 부분에 새로운 코드를 입력해주면 되는데요, 아래 텍스트 파일을 받아서 그대로 복사 붙여넣기를 해주세요.

 

매크로_SameCellMerge.txt
0.00MB

 

 

그 후 Ctrl + S 로 엑셀 파일을 저장해줍니다. 이때 파일형식을 Excel 매크로 사용 통합 문서로 저장해주어야 다음에도 매크로를 사용 할 수 있습니다.

 

 

Alt + F8 으로 다시 매크로 창을 열고 옵션 버튼을 클릭합니다.

 

 

바로 가기 키를 설정해서 간편하게 매크로를 실행하도록 할건데요, merge기능을 하니 간단하게 Ctrl + m 으로 설정을 하고 확인을 눌러줍니다.

 

 

그럼 이제 엑셀 화면으로 돌아와서 Ctrl + m을 눌러보면 다음과 같은 창이 뜹니다. 

 

 

여기서 원하는 병합 영역을 선택합니다.

병합은 열 기준으로 동일한 값이 있는 셀을 병합해줍니다.

 

 

두둥!

 

다음과 같은 결과를 확인 할 수 있습니다.

 

 

 


 

매크로 기능을 이용해서 동일한 값을 쉽게 병합하는 방법에 대해 알아보았습니다. 엑셀 병합에 귀한 시간 낭비하지 마시길 바랍니다.

 

 

 


# 병합 매크로 택스트

Sub SameCellMerge()
    Dim rngTarget As Range
    Dim rngCell As Range
    Dim strAddress As String
    Dim intNum As Long
    Dim intCount As Long
    Dim intTemp2 As Long
    Dim intTemp As Long
    Dim i As Integer
    Application.DisplayAlerts = False
    On Error GoTo ET
    Set rngTarget = Application.InputBox("대상 영역을 선택하세요", "영역 선택", Type:=8, Default:=strAddress)
    intNum = rngTarget.Cells.Count
    For Each rngCell In rngTarget
        intTemp = intTemp + 1
        intTemp2 = intNum - intTemp
        If Len(rngCell) > 0 Then
            i = 0
            For intCount = 1 To intTemp2
                If rngCell.Offset(intCount, 0) = rngCell Then
                    i = i + 1
                Else
                    Exit For
                End If
            Next intCount
            If i > 0 Then Range(rngCell, rngCell.Offset(i, 0)).Merge
        End If
    Next rngCell
    rngTarget.VerticalAlignment = xlCenter
    Application.DisplayAlerts = True
    Exit Sub
ET:
    MsgBox "영역 선택이 잘못되었습니다. 영역을 다시 선택하세요!", , "에러 번호: " & Err.Number
End Sub

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함