본문 바로가기
VBA/엑사남_기초방

[기초방] VBA 100제 #28 [ 그룹 통합하기 ]

by 일등미노왕국 2023. 2. 5.

이번 문제는 시트를 추가한 후 그 이름을 통합으로 변경하는 문제가 그 첫 번째이고

통합시트에 각각의 시트의 데이터들을 모두 복사 이동하는 구문이다.

 

이 구문을 해결하기 위해서는 데이터가 어디에 있는지 확인하는 것이 가장 급선무이다. 각 시트의 데이터가 특정 영역에서 시작하고 끊김 없이 끝까지 데이터가 입력된 상태인 규칙적인 형태이다. 물론 특정영역부터 데이터가 입력된 영역까지로 하여 데이터를 복사해서 붙여 넣기 해도 되지만 여기서는 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

 

 

 

엄마~~ 혹시~~

기초방28.xlsm
0.04MB

댓글