Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 여러 시트 데이터 합치기

엑셀(Excel)/VBA
반응형

VBA 코드를 이용하면 자동으로 여러 시트에 있는 값을 지정한 시트로 합칠 수 있습니다. 여러 시트에 나누어져 있는 데이터가 많을 수록 도움이 됩니다. VBA 코드로 간단하게 합쳐 보세요. 이번 예제는 두, 세 번째 시트 값을 첫 번째에 복사해서 넣습니다. 

 

 

아래 그림은 샘플의 구조를 설명한 것입니다. 시트 구분을 위해 데이터를 1-1, 2-1, 3-1 형태로 집어 넣었습니다.

엑셀 VBA 여러 시트 합치는 방법

 

자동으로 시트의 내용을 합치려면 VBA 소스를 실행할 컨트롤이 있어야 합니다. 함수 실행을 위해 버튼을 만듭니다. 버튼 컨트롤을 추가하려면 [개발 도구] > [삽입] 리본 메뉴를 클릭해야 합니다. 컨트롤 목록에서 버튼을 클릭한 후 시트에 드래그하면 버튼이 만들어 집니다.  

엑셀 VBA 여러 시트 합치는 방법

 

버튼 컨트롤을 추가했다면 매크로를 지정해야 합니다. 클릭 이벤트가 발생했을 때 실행할 소스가 들어 있는 함수가 되겠죠. 함수 명을 적고 [새로 만들기] 버튼을 클릭하시면 소스 코드 편집 창이 뜹니다.

엑셀 VBA 여러 시트 합치는 방법

 

VBA 편집창이 뜨면 아래 소스를 넣습니다. 버튼을 클릭하게 되면 실행될 소스 입니다. 소스는 Module1 에 들어가게 됩니다.

엑셀 VBA 여러 시트 합치는 방법

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 셀을 병합하는 Merge 함수 사용하기
엑셀 VBA 연산자 사용해서 String 문자열을 합치기
엑셀 VBA For Each 반복문 이용해서 영역 병합 합계 구하기
엑셀 VBA 문자가 포함된 숫자만 합치기
셀 VBA 숫자를 문자로 변환하는 방법

 

 

소스를 분석해 드리겠습니다. 첫 번째 시트 객체는 ws 입니다. 다른 시트의 값을 첫 번째 시트에 복사하기 위해서는 가장 마지막 행을 찾아야 합니다. 그것을 찾는 소스가 ws.Cells(Rows.Count, 1).End(xlUp) 입니다. 그리고 Offset(1, 0) 함수로 첫 번째 열 위치 개체를 가져옵니다. 다음은 For 문을 돌면서 두 번째 시트부터 복사해서 첫 번째 시트의 위치 개체인 rg 에 붙여 넣는 것이죠. 그것이 Sheets(i).UsedRange.Copy rg 입니다.

Sub Sheet_Click()
 
    Dim i As Integer
    Dim ws As Worksheet
    Dim rg As Range
    Set ws = Sheets(1)
   
    For i = 2 To Sheets.Count
        Set rg = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        Sheets(i).UsedRange.Copy rg
    Next i
 
End Sub

 

 

버튼을 클릭해서 소스를 실행한 결과 입니다. 시트2, 시트3 에 있던 내용들이 전부 시트1 에 복사되었습니다. 이걸 응용하시면 다양하게 활용할 수 있습니다.

엑셀 VBA 여러 시트 합치는 방법

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 셀을 병합하는 Merge 함수 사용하기
엑셀 VBA 연산자 사용해서 String 문자열을 합치기
엑셀 VBA For Each 반복문 이용해서 영역 병합 합계 구하기
엑셀 VBA 문자가 포함된 숫자만 합치기
셀 VBA 숫자를 문자로 변환하는 방법
반응형
Posted by 녹두장군1
,