시트 합치기 매크로
매크로를 사용하여 여러 시트 값을 합칠 때는 주의할 점이 있다. 매크로 사용은 작업 취소가 되지 않는다는 단점 때문에 원본에 직접 합치기 작업을 하기보다 합친 결과를 새로운 시트로 관리하는 것이 편하다. 혹, 작업에 실수가 있었다 한들 그냥 생성된 시트만 삭제하면 된다. 물론, 본질은 각각의 시트에 포함된 값을 하나로 합치는 데 있을 것이다. 결국은 각각의 시트에 포함된 값을 복사해서 오는 것이 가장 중요하겠지만 생성한 매크로(vba)는 이런 점을 중요시하였다.
이번 매크로는 시트 값과 서식을 포함하여 각각의 시트에 포함된 값을 순서대로 복사하여 합치고 이 결과를 생성된 시트에 붙여 넣는 작업이 함축되었다고 이해하면 빠르겠다. 일일이 시트를 돌아다니면서 내용을 복사하고 붙여 넣는 반복작업을 매크로는 줄여줄 것이다.
매크로 조건 및 코드 (시트 합치기)
동작 방법은 아래와 같다.
- 대상 시트가 여러 개 일수 있음.
- 각각의 시트 값을 쌓듯 결과 시트에 복사.
- 텍스트는 물론 서식도 포함.
- 결과를 나타내는 시트는 생성 또는 초기화 가능.
- 완료 메시지 출력.
Sub 시트값합치기()
Dim 결과시트 As Worksheet
Dim 원본시트 As Worksheet
Dim 결과셀번호 As Long
On Error Resume Next
Set 결과시트 = Worksheets("합쳐진시트")
On Error GoTo 0
If 결과시트 Is Nothing Then
Set 결과시트 = Sheets.Add(After:=Sheets(Sheets.Count))
결과시트.Name = "합쳐진시트"
Else
결과시트.Cells.Clear
End If
결과셀번호 = 1
For Each 원본시트 In Worksheets
If 원본시트.Name <> "합쳐진시트" Then
If 원본시트.UsedRange.Rows.Count > 0 And 원본시트.UsedRange.Columns.Count > 0 Then
원본시트.UsedRange.Copy
결과시트.Cells(결과셀번호, 1).PasteSpecial xlPasteValues
결과시트.Cells(결과셀번호, 1).PasteSpecial xlPasteFormats
결과셀번호 = 결과셀번호 + 원본시트.UsedRange.Rows.Count
End If
End If
Next 원본시트
Application.CutCopyMode = False
MsgBox "시트 값 합치기 완료", vbInformation
End Sub
매크로 실행 (시트 합치기)
매크로가 실행되면 각 시트의 값을 복사한다. 시트의 개수는 무관하다. 첫 번째부터 순서대로 복사해서 쌓듯이 결과를 나타내는 시트에 붙여 넣는다. 첫 번째 시트의 복사가 완료되면 , 두 번째 시트의 값을 아래 행에 연이어 복사한다. 세 번째, 네 번째... 순으로 아래(행) 방향으로 복사를 진행한다.
'합쳐진 시트'의 이름을 가진 sheet는 결과를 나타내고 이 시트가 존재하지 않으면 생성한다. 매크로가 반복되는 경우 추가하지 않고 초기화한뒤 진행한다. 그래서 매크로가 반복되어도 시트들의 값들이 반복 복사되지 않는다.
시트를 합쳐진 것처럼 보이지만 사실 복사 붙여 넣기 작업이 된다. 당연히 셀의 서식 또한 포함하여 복사한다. 서식만 존재하는 셀이라도 포함하여 '합쳐진 시트'에 쌓듯 위치하여 복사한다.
매크로 공유 (시트 합치기)
수정해서 사용할 필요는 없는 매크로이다. 저장해 두고 필요할 때마다 꺼내 사용한다. 결과만 복사해서 사용하려는 엑셀 원본에 복사, 값만 붙여 넣기 하면 된다. 굳이 매크로가 포함된 통합문서를 원본으로 둘 필요는 없을 듯하다.
매크로(vba) 코드는 매크로 생성을 한 뒤 붙여 넣기 하면 정상 작동될 것이다. 그에 관한 궁금증은 이전 게시글을 확인하면 된다.
'엑셀 매크로로 편하게 엑셀하기
사무실 일잘러의 가장 필요한 팁들
minidrawer.tistory.com
'엑셀 팁(excel) > 엑셀 매크로 VBA' 카테고리의 다른 글
엑셀 매크로 버튼 만드는 기초 vba 활용 (1) | 2023.12.11 |
---|---|
엑셀 중복 값 삭제 매크로(vba) #7 (0) | 2023.12.10 |
엑셀 특정 값 데이터 검색 매크로(vba) #5 (1) | 2023.12.09 |
엑셀 문자열 합치기 매크로(vba) #4 (2) | 2023.12.05 |
엑셀 필요한 매크로 #3 열 너비 자동 맞춤 (0) | 2023.12.04 |