엑셀 / 여러 시트 합치는 방법
동일한 형식에 내용만 다른 여러 시트를 가진 엑셀 문서를 만드는 경우가 있습니다. 예를 들어 지점별로 시트를 만들어 상품 재고 현황을 기록할 수 있겠죠. 이때 시트를 옮겨다니면서 각 지점의 데이터를 볼 수도 있지만, 모든 재고 현황을 합하여 전체 재고를 파악하기도 할 겁니다.
그렇다면 어떻게 여러 시트의 데이터를 하나의 시트로 합칠 수 있을까요?
일단은 복사 붙여넣기로 합하는 게 떠오를텐데, 당연히 가능한 방법입니다. 하지만 지점이 수십 개라면 얘기가 달라지죠. 단순한 작업에 시간을 많이 투자하게 됩니다. 여러 시트의 데이터를 하나의 시트에 합치는 일을 자주 한다면 VBA를 이용하세요. 만드는 건 귀찮지만, 많은 시간을 절약할 수 있습니다.
예를 들어 다음과 같은 엑셀 문서가 있다고 합시다. 첫 번째 시트는 합쳐진 데이터가 모일 시트이고, 세 개의 데이터가 있는 시트가 있습니다.
[개발 도구]의 [Visual Basic]을 클릭합니다. 만약 개발 도구 메뉴가 없다면 여기의 안내대로 개발 도구를 추가하세요.
[삽입]의 [모듈]을 클릭합니다.
다음과 같이 코드를 만들 겁니다.
아래의 코드를 복사하여 붙여넣으면 됩니다.
Sub Merge() Sheets(1).Activate '첫 번째 시트로 이동 ActiveSheet.Range("A1").CurrentRegion.Select '값이 있는 셀 선택 Selection.Delete '선택한 셀 삭제 Sheets(2).Activate '두 번째 시트로 이동 ActiveSheet.Range("A1").CurrentRegion.Select '값이 있는 셀 선택 Selection.Copy Destination:=Sheets(1).Range("A1") '첫 번째 시트에 붙여넣기 ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select '값이 있는 다음 행 첫 번째 셀 선택 Dim I As Integer For I = 3 To 4 Sheets(I).Activate 'I 번째 시트로 이동 ActiveSheet.Range("A1").CurrentRegion.Select '값이 있는 셀 선택 Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select '선택에서 1행 제외 Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2) '첫 번째 시트에 붙여넣기 ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select '값이 있는 다음 행 첫 번째 셀 선택 Next Sheets(1).Activate '첫 번째 시트로 이동 ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select '값이 있는 다음 행 첫 번째 셀 선택 End Sub
다음의 순서로 작업하는 코드입니다.
- 첫 번째 시트를 선택하고 내용을 지운다.
- 두 번째 시트의 내용을 복사하여 첫 번째 시트에 붙여넣는다.
- 나머지 시트의 내용을 복사하여 첫 번째 시트에 붙여넣는다.
두 번째 시트에 대한 코드와 나머지 시트에 대한 코드가 다른 이유는 머리글 때문입니다.
이제 [개발 도구]의 [매크로]를 클릭합니다. 단축키는 Alt+F8입니다.
Merge를 선택하고 [실행]을 클릭합니다.
다음처럼 첫 번째 시트에 데이터가 다 모입니다.