VBA 코드를 이용하면 자동으로 여러 시트에 있는 값을 지정한 시트로 합칠 수 있습니다. 여러 시트에 나누어져 있는 데이터가 많을 수록 도움이 됩니다. VBA 코드로 간단하게 합쳐 보세요. 이번 예제는 두, 세 번째 시트 값을 첫 번째에 복사해서 넣습니다.
▼ 아래 그림은 샘플의 구조를 설명한 것입니다. 시트 구분을 위해 데이터를 1-1, 2-1, 3-1 형태로 집어 넣었습니다.
▼ 자동으로 시트의 내용을 합치려면 VBA 소스를 실행할 컨트롤이 있어야 합니다. 함수 실행을 위해 버튼을 만듭니다. 버튼 컨트롤을 추가하려면 [개발 도구] > [삽입] 리본 메뉴를 클릭해야 합니다. 컨트롤 목록에서 버튼을 클릭한 후 시트에 드래그하면 버튼이 만들어 집니다.
▼ 버튼 컨트롤을 추가했다면 매크로를 지정해야 합니다. 클릭 이벤트가 발생했을 때 실행할 소스가 들어 있는 함수가 되겠죠. 함수 명을 적고 [새로 만들기] 버튼을 클릭하시면 소스 코드 편집 창이 뜹니다.
▼ VBA 편집창이 뜨면 아래 소스를 넣습니다. 버튼을 클릭하게 되면 실행될 소스 입니다. 소스는 Module1 에 들어가게 됩니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 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 셀을 병합하는 Merge 함수 사용하기 ▶ 엑셀 VBA 연산자 사용해서 String 문자열을 합치기 ▶ 엑셀 VBA For Each 반복문 이용해서 셀 영역 병합 및 합계 구하기 ▶ 엑셀 VBA 문자가 포함된 숫자만 합치기 ▶ 엑셀 VBA 숫자를 문자로 변환하는 방법 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 셀을 병합하는 Merge 함수 사용하기 (1) | 2024.10.31 |
---|---|
엑셀 VBA 작은 따옴표, apostrophe 일괄적으로 삭제하는 방법 (1) | 2024.10.25 |
엑셀 VBA 변수 생명 주기 지정하는 방법, Static 정적 변수 사용법 (1) | 2024.10.23 |
엑셀 VBA 개별 파일 시트 복사해서 하나의 파일에 통합하기 (2) | 2024.10.23 |
엑셀 VBA 상태바 STATUSBAR 정보 출력하기 (0) | 2024.10.12 |
엑셀 VBA 셀 색상 변경하는 두 가지 방법 (2) | 2024.10.12 |
엑셀 VBA 연산자 사용해서 String 문자열을 합치기 (2) | 2024.10.11 |
엑셀 VBA 셀 배경색 적용하는 다양한 방법 (0) | 2024.08.12 |