반응형

주소: http://fillin.tistory.com/76


엑셀 작업 중 아래와 같이 같은 값을 가지고 있는 셀 병합이 필요한 경우가 있다.

병합해야 할 양이 적은 경우, 일반적으로 셀을 선택하여 셀 병합 후 병합된 셀에 값을 입력한다.

하지만 병합해야 할 양이 많은 경우, 노동 시간이 그 양에 비례하게 된다.

엑셀의 매크로 기능을 이용하여 많은 양의 셀 병합을 한 번에 빠르게 처리할 수 있는 방법을 소개한다.

 

Step 1. 엑셀 매크로 사용법

macro usage in excel

 

 

1. 메뉴 탭 [보기] 클릭

2. 우측 매크로 버튼을 눌러 매크로 보기(V) 클릭

 

 

 

 

매크로 창이 뜨면

3. 사용할 매크로 이름 입력

4. 만들기 클릭

 

 

 

 

5. 아래의 소스 코드를 해당 영역에 붙여넣기 한다.

6. 저장(Ctrl + S)

 

자동 병합 소스 코드 (auto merge source code)


Sub MergeMacro()
 
' 선택 영역에서 인접 셀에 같은 값이 있는 경우 셀을 병합함'
If Selection.Cells.Count < 2 Then

    MsgBox "작업할 범위를 먼저 선택하세요"
 
    Exit Sub
 
End If
 
Dim iRow As Integer, iCol As Integer, tR As Integer, tC As Integer, sVal As String
Dim rMax As Integer, cMax As Integer, iCount As Integer, cSave As Integer
 
Application.DisplayAlerts = False
Application.ScreenUpdating = False
 
iRow = Selection.Cells(1).Row: iCol = Selection.Cells(1).Column
 
cSave = iCol
 
rMax = Selection.Cells(Selection.Cells.Count).Row
cMax = Selection.Cells(Selection.Cells.Count).Column
 
tR = 0: tC = 0: iCount = 0
 
Do While iRow <= rMax
 
    sVal = Cells(iRow, iCol)
 
    ' 현재 셀이 병합 셀이 아닌경우'
    If Cells(iRow, iCol).Cells.Count = 1 And Trim(Cells(iRow, iCol)) <> "" Then

		' 우측 연속 셀 검사'
        Do While Cells(iRow, iCol + tC + 1) = sVal
 
            tC = tC + 1
 
        Loop

        If tC > 0 Then      ' 우측 병합대상 있는 경우'

			Do While Cells(iRow + tR + 1, iCol) = sVal

                For i = 0 To tC
 
                    If Cells(iRow + tR + 1, iCol + i) <> sVal Then Exit Do
 
                Next i
 
                tR = tR + 1
 
            Loop

            Range(Cells(iRow, iCol), Cells(iRow + tR, iCol + tC)).Merge

            iCol = iCol + tC

            iCount = iCount + 1
 
        Else
 
            Do While Cells(iRow + tR + 1, iCol) = sVal
 
                tR = tR + 1
 
            Loop
 
            If tR > 0 Then

                Range(Cells(iRow, iCol), Cells(iRow + tR, iCol)).Merge

                iCount = iCount + 1

            End If
 
            iCol = iCol + 1
 
        End If
 
        tC = 0: tR = 0
 
    Else
 
        Cells(iRow, iCol).Offset(0, 1).Select
 
        iCol = Selection.Column
 
    End If
 
    If iCol > cMax Then
 
        iCol = cSave: iRow = iRow + 1
 
    End If

Loop
 
Application.DisplayAlerts = True
Application.ScreenUpdating = True
 
MsgBox Trim(iCount) & "개의 병합셀이 만들어졌습니다."
 
End Sub
 
	
 

 

다음 기능은 매크로 제외 통합 문서에 저장할 수 없습니다. VB 프로젝트

 

저장을 하게 되면 위와 같은 경고창이 나타나는 경우가 있다.

 

를 누르게 되면 문서를 닫기 전 까지 매크로 기능을 사용할 수 있지만, 추후에 매크로 기능을 사용할 수 없다. (매크로 제외 통합 문서 : *.xlsx)

아니요를 누르게 되면 추후에도 해당 매크로 기능을 사용할 수 있다(매크로 사용 통합 문서로 변경).

 

아니요를 누른 경우 아래 화면이 나타난다. (예를 누르고 진행해도 된다.)

 

 

 

 

7. 위에서 아니요를 누르게 되면 파일 형식을 Excel 매크로 사용 통합 문서(*.xlsm)으로 선택하여 저장한다.

저장 후 소스 코드 편집기를 닫는다.


추가1. 저장할 때 엑셀 97 - 2003 통합문서(*.xls)로 저장하면 매크로 기능이 저장되며 추후에도 사용 가능하다. (해당 문서에만 적용됨)

보안 경고 매크로를 사용할 수 없도록 설정했습니다. 에서 콘텐츠 사용을 클릭하면 된다.

 

 

 

 

Step 2. 엑셀 매크로 실행

 

 

8. 자동으로 셀을 병합할 영역을 선택한다.

9. 메뉴 탭 [보기] - 매크로 - 매크로 보기 클릭

 

 

 

 

10. 조금 전에 만든 매크로를 선택하고 실행 버튼을 클릭한다.

 

 

 

 

11. 선택 영역에서 인접한 셀에 같은 값이 있는 경우 자동으로 셀이 병합되었다.

 

반응형

+ Recent posts