Excel 이야기

엑셀 팁 - 병합된 셀에 행 추가하기2(선택영역 내 같은 내용 셀 병합하기)

뜨란 2021. 1. 13.
반응형

지난 포스팅에서 병합된 셀에 여러 상황별로 빈 행을 추가하는 방법을 다뤘습니다. 

 

 

이번에는 병합이 해제되었던 셀들을 다시 병합하여 마무리하는 과정을 다뤄보도록 하겠습니다. 앞선 포스팅과 이어지는 내용이므로 이해가 어려운 부분이 있다면 이전 포스팅을 같이 봐주시기 바랍니다.

 

* * *   * * *

 

 

 

 

 빈 칸 채우기

 

 

각 부서별로 빈 행이 추가된 상태입니다. 여기서 나누었던 셀 병합을 하기에 앞서 B열의 빈 칸을 채워줘야 합니다.

 

 

 

F5번을 눌러 옵션 → 빈 셀을 선택합니다.

'='을 누르고 ↑키를 1회 누른 후 Ctrl + Enter를 눌러주는 방법을 사용해 빈 칸을 채워줍니다.

제자리 복사 붙여넣기를 통해 수식을 제거해줍니다.

 

빈 칸 채우기 과정은 파트1 및 별도의 포스팅에서 다루었기에 간략히 적었습니다.

 

[빈 칸 채우기까지 끝낸 모습 - 수식으로 채운 부분을 값으로 바꿔주는 것이 포인트]

 

 

셀 병합을 위한 준비가 끝났습니다. 다만 선택 범위에 대한 조건부 셀 병합을 하는 직접적인 기능은 없다보니 VBA 매크로를 통해 진행해야 합니다. 다음 내용을 참조해주시기 바랍니다.

 

 

 

 

 

 VBA 코드를 통한 여러 셀 병합하기

 

 

우선 VBA 코드를 작성하기 위해 시트 탭에서 현재 시트 이름을 우클릭 후 코드 보기를 눌러줍니다.

 

[시트이름 우클릭 후 코드 보기 실행]

 

 

VBA가 실행되면서 코드 입력창이 나타납니다. 여기에 코드를 작성하거나 붙여넣으면 됩니다.

 

화면 우측으로 보이는 Sheet, 현재_통합_문서 등의 개체 선택을 통해 코드의 위치를 지정할 수 있습니다. 이번 포스팅에서는 Sheet11(sample)에 코드를 넣도록 하겠습니다. 

 

Sheet11(sample)에 대한 설명을 덧붙이자면.

Sheet11은 이전 파일에서 11번째 시트를 이동하여 붙은 것 입니다. 기본적으로 Sheet1부터 시작합니다. ( )안의 sample은 시트 명입니다.

 

[VBA 코드 입력 화면 - 코드 보기를 통해 열린 모습] 

 

 

아래의 코드가 셀 병합용 VBA 코드입니다. (출처는 니꾸님의 블로그입니다.) 다음의 코드를 그대로 코드 입력창에 붙여넣어주시면 됩니다.

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Option Explicit
'출처 : https://blog.naver.com/rosa0189/60210941614
'       (1628) 위아래 같은 값 셀병합 매크로 2 (엑셀 VBA 매크로)|작성자 니꾸
 
Sub merge_Columns_Duped()
 
    Dim x As Long
    Dim r As Long                            '행(r)ow 늘려갈 변수
    Dim i As Long                            '동일 이름 중복개수 구할 변수
   
    With Selection                           '선택 영역에서
        If .Cells.Count = 1 Then                                    '1셀만 선택한 경우
            MsgBox "1셀 이상 선택하고 재실행"64"영역선택 오류"
            Exit Sub                         '메시지창 출력 후 매크로 종료
        End If
       
        For x = 1 To .Columns.Count          '1부터 선택영역 열 개수만큼 반복
               
            Do                               '다음을 실행
                r = r + 1                    '행을 1씩 증가
               
                If .Cells(r, x) = .Cells(r + 1, x) Then            '각 셀이 바로 아래 셀과 같으면
                    i = i + 1                '중복개수를 하나씩 늘려감
                Else                         '각 셀이 바로 아래 셀과 다르면
       
                    If i > 0 Then            '중복이 있을 경우
                        Application.DisplayAlerts = False        '화면 경고 중지
                        .Cells(r - i, x).Resize(i + 11).Merge  '중복영역 셀병합
                        Application.DisplayAlerts = True         '화면 경고 복원
                    End If
                   
                    i = 0                                        '재사용 위하여 초기화
                End If
           
            Loop Until r = .Rows.Count                           '선택영역 마지막 행까지 무한반복
           
            r = 0                                                '재사용 위하여 초기화
        Next x
    End With
 
 
    'MsgBox "매크로가 종료되었습니다."                          '종료 메시지창 출력
End Sub
 
 
cs

 

[코드 넣기가 완료된 모습]

 

 

즉시 실행 가능한 상태로 별도로 VBA상에서 저장할 필요는 없습니다. 이제 다시 엑셀 시트로 돌아오면 됩니다. 복사 과정에서 오타 및 부분 복사 등에 의해 코드가 정상적으로 반영되지 않았다면 팝업 경고창이 출력될 수 있습니다. 그 때는 코드를 싹 지웠다가 다시 넣어보시기 바랍니다. 

 

 

* VBA 매크로를 실행하기에 앞서 주의사항이 있습니다.

 

매크로를 통한 동작은 되돌리기가 불가능합니다. 특히 모르는 코드를 사용할 때는 해당 문서의 저장 및 백업을 필수로 권합니다. 그러니 현 시점에서 미리 해당 문서를 저장 및 백업 하신 후 시도하시기 바랍니다.

 

 

매크로는 리본 메뉴의 보기 탭 가장 우측 끝에 위치하고 있습니다. 혹은 개발 도구 탭에 있으나 개발 도구 탭은 사용자가 필요에 의해 추가하지 않는 한 기본 메뉴에 포함되지 않습니다.

 

[보기 메뉴]
[개발 도구 - 사용자가 별도로 추가해야하는 메뉴]

 

 

마지막으로 매크로를 실행하는 과정만 남았습니다. 셀 병합하고자 하는 영역을 미리 선택해둔 뒤 매크로 버튼을 클릭합니다. VBA로 입력했던 매크로가 출력됩니다. 실행을 눌러주면 즉시 매크로가 실행됩니다.

 

[영역 설정 후 매크로 호출]

 

 

아래 예시 화면에서처럼 B열과 C열에 텍스트가 겹치는 부분에 대해 자동으로 셀 병합이 진행되는 모습을 볼 수 있습니다. 

 

[매크로를 실행하여 여러 셀을 한 번에 병합하기]

 

 

대부분 위의 코드로 해결이 가능한데 주의를 요하는 부분이 있습니다. 같은 단어를 가지면서 병합된 셀이 문서 구조상 반복되는 경우 있습니다. 

 

 

위와 같이 A를 하나로 통합하지 않고, 별도로 구분해야하는 형태의 문서도 있습니다. 이럴 때는 매크로를 사용하면 3칸만 병합되는 것이 아니라 6칸이 병합됩니다. 해당 구간은 미리 체크해서 살짝 텍스트를 변경해둔 후 매크로를 사용하는 방법을 권합니다.

 

또한 코드 상에 들어간 조건이 단순한 편으로 매크로 사용 중 문제가 발생할 수도 있습니다. 특정 영역에서 빈셀과 만나서 병합이 되거나 하는식으로요.

 

다시 한 번 강조하지만 중요 문서에 대해서는 매크로 적용 전 백업 및 매크로 사용 후 충분한 검토를 해주시기 바랍니다.

 

셀 병합 해제 후 빈 칸 추가하기, 재병합하기는 여기까지입니다.

 

매크로를 한 번 사용하기 시작하면 그 편의성을 몰랐다면 모를까. 알게 된 이상 계속 찾게 됩니다. 멀리 가지 마시고, VBA 코드 출처인 니꾸님의 블로그에 가보시길 바랍니다. 매우 다양한 매크로 자료들이 포스팅되어 있습니다. 초보들도 쉽게 접근할 수 있도록 상세한 설명과 함께 올려주신게 많아 공부하는데 많은 도움을 받을 수 있는 곳입니다.

 

 

* * *   * * *

 

 

 

 

엑셀을 다루는데 도움이 될만한 팁을 포스팅하고 있습니다. 한 번 둘러보시는건 어떨까요?

 

반응형