이번 문제는 시트를 추가한 후 그 이름을 통합으로 변경하는 문제가 그 첫 번째이고
통합시트에 각각의 시트의 데이터들을 모두 복사 이동하는 구문이다.
이 구문을 해결하기 위해서는 데이터가 어디에 있는지 확인하는 것이 가장 급선무이다. 각 시트의 데이터가 특정 영역에서 시작하고 끊김 없이 끝까지 데이터가 입력된 상태인 규칙적인 형태이다. 물론 특정영역부터 데이터가 입력된 영역까지로 하여 데이터를 복사해서 붙여 넣기 해도 되지만 여기서는 Usedrange가 더 바람직한 사용법이라 본다.
For Each Sh In ThisWorkbook.Sheets
If Sh.Name <> "통합" And Sh.Name <> "문제" Then
Sh.UsedRange.Offset(1).Copy Sheets("통합").Cells(Rows.Count, "b").End(3)(2)
End If
Next Sh
워크 시트들을 순환하면서 각 시트의 이름을 [통합 / 문제 ]가 아닌 시트들의 UsedRange.offset(1) 값 [사용된 모든 영역에서 헤더값을 뺀] 들을 복사하여 통합시트에 끊김 없이 복사 붙여 넣기 하면서 문제를 풀어나가는 코드이다.
글로 설명하니 힘드나 실제 코드를 보면 어렵지 않은 코드이다.
더보기
Option Explicit
Sub 기초방28()
Dim Sh As Worksheet
Sheets.Add before:=Sheets("문제") '= 기초방 28번 해법
ActiveSheet.Name = "통합"
[b8:c8] = Array("성명", "매출")
Haja_Format
For Each Sh In ThisWorkbook.Sheets '= 각 시트를 순환해라
If Sh.Name <> "통합" And Sh.Name <> "문제" Then '= 시트명이 통합이나 문제가 아니면
Sh.UsedRange.Offset(1).Copy Sheets("통합").Cells(Rows.Count, "b").End(3)(2)
'= 사용된 영역을 복사해서 통합시트에 붙혀넣기 해라
End If
Next Sh
End Sub
Function Haja_Format()
With [b8:c8]
.HorizontalAlignment = xlCenter
.Interior.Color = vbBlack
.Font.Color = vbWhite
End With
ActiveWindow.DisplayGridlines = False '= 눈금선을 없애라
End Function
엄마~~ 혹시~~
'VBA > 엑사남_기초방' 카테고리의 다른 글
[기초방] VBA 100제 #30 [ 폰트처리하기_2 ] (0) | 2023.02.07 |
---|---|
[기초방] VBA 100제 #29 [ 폰트처리하기 ] (0) | 2023.02.07 |
[기초방] VBA 100제 #27 [ 미납자 확인 ] (2) | 2023.02.05 |
[기초방] VBA 100제 #26_1 [ 그룹별 목차 만들기 ] (0) | 2023.02.05 |
[기초방] VBA 100제 #26 [ 그룹별 시트 만들기 ] (0) | 2023.02.03 |
댓글