Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 셀을 병합하는 Merge 함수 사용하는 방법

엑셀(Excel)/VBA
반응형

엑셀 VBA 셀을 병합하는 Merge 함수 사용하는 방법

 

환경: Microsoft Excel 2013

 

엑셀의 워크시트에서 셀 영역을 병합하는 경우가 많습니다. VBA 에서는 셀 병합을 위해서 Range 개체의 Merge 함수를 사용해야 합니다. 오늘은 VAB 에서 Merge 와 UnMerge 함수를 사용해 셀 영역을 병합하거나 다시 원래대로 돌리는 방법에 대해 알아 보겠습니다. 

 

이번에 만들 코드는 워크시트에서 선택한 셀을 매크로로 병합하는 것입니다. 매크로 작성을 하기 위해 [개발도구] > [매크로] 리본 메뉴를 선택합니다. 

엑셀 VBA 셀을 병합하는 Merge 함수 사용하는 방법

 

셀을 병합하는 소스는 간단합니다. Range 함수로 얻은 영역 객체에서 Merge() UnMerge() 함수를 사용하면 됩니다. Merge() 는 셀 영역을 병합하는 기능을 수행하고 UnMerge() 는 그 반대입니다.

 

Sub SellMerge()

   

    '' 셀 병합하기

    Range("A2:A5").Merge

   

End Sub

 

Sub SellUnMerge()

   

    '' 셀 병합하기

    Range("A2:A5").UnMerge

   

End Sub

 

위의 소스에서 Merge() 를 수행한 결과 입니다. 워크시트의 A2:A5 영역을 병합했습니다.

엑셀 VBA 셀을 병합하는 Merge 함수 사용하는 방법

 

Merge() 함수를 실행해서 셀을 병합한 것을 다시 원래 대로 되돌리기 위해 UnMerge() 를 실행했습니다.

엑셀 VBA 셀을 병합하는 Merge 함수 사용하는 방법

 

¤ 병합 하려는 영역에 데이터가 여러 개를 합칠 때

 

그럼 셀 영역에 여러 개의 값이 있을 때는 어떻게 될까요? 아래 그림처럼 병합하려는 셀에 3개의 데이터가 있습니다.

엑셀 VBA 셀을 병합하는 Merge 함수 사용하는 방법

 

셀 병합 함수를 실행하게 되면 아래 그림과 같이 엑셀 리본 메뉴에서 실행할 때와 같은 메시지가 뜨게 됩니다. 제일 상단에 있는 셀만 남기고 모두 제거가 되는 것이죠. 이렇게 메시지가 뜨기 때문에 본인이 미처 체크하지 못한 상황에서 데이터를 날려 먹을 일은 없습니다.

엑셀 VBA 셀을 병합하는 Merge 함수 사용하는 방법

 

¤ Range 함수의 인수로 영역을 지정하지 않고 선택한 영역을 바로 합치고자 할 때

 

이번에는 Range() 함수의 인수로 영역을 지정하는 것이 아니라 마우스로 드래그해서 영역을 지정했을 때 그것을 인식해서 병합하는 소스입니다. 그럼 영역을 병합하기 위해 매번 소스를 수정하지 않아도 되겠죠. 그 역활을 하는 것이 Selection 속성입니다. Selection 속성은 워크시트에 선택된 영역의 객체를 리턴합니다. 이렇게 리턴한 객체의 함수로 Merge UnMerge 함수를 사용하면 마우스로 선택한 영역을 바로 병합하거나 해제할 수 있습니다.

 

Sub SelectionSellMerge()

 

    Selection.Merge

   

End Sub

 

Sub SelectionSellUnMerge()

 

    Selection.UnMerge

   

End Sub

 

아래 그림처럼 셀을 선택한 상태에서 매크로를 실행했습니다. Range 로 영역을 선택해서 실행한 것과 동일한 결과가 나타납니다.

엑셀 VBA 셀을 병합하는 Merge 함수 사용하는 방법

 

반응형
Posted by 녹두장군

댓글을 달아 주세요

  1. 셀린이 2021.01.18 08:16  댓글주소  수정/삭제  댓글쓰기

    한셀에서 셀병합/분할 단축키가 Ctrl+M인 것처럼 엑셀에서도 매크로로 만들어서 단축키 설정하려고 하는데
    셀병합이 된 상태라는 걸 VBA로 어떻게 표현할 수 있나요??

    Sub Ctrl_M() '셀 병합하기
    If Selection Is Merge Then
    Selection.UnMerge
    Else: Selection.Merge
    End If
    End Sub

    약간 이런 느낌으로 해야될 거 같은데 If Selection is Merge를 어떻게 코딩용어로 바꿔야할지 모르겠어요