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

[기초방] VBA 100제 #69 [ 테이블 순환하며 결합하기 ]

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

기초방 68문제의 해결을 각 표를 하나씩 하드 코딩하여 붙혀넣기 하였다면, 이번 구문은 각 테이블을 순환하면서 표 개체를 하나씩 붙혀넣기 하는 방식으로 풀어보았다.

For Each ListTbl In ActiveSheet.ListObjects      '= 각 표의 데이터 값을 가져옴
        
    ListTbl.DataBodyRange.Copy
    Cells(Rows.Count, "f").End(3)(2).PasteSpecial xlPasteValues

Next ListTbl

각 테이블을 순환하면서 출력 테이블의 데이터값이 있는 행의 다음 행에 각 테이블의 값만 가져오는 코드이다. 

이게 이번 문제의 키가 될것이다.

더보기
Option Explicit

Sub 기초방69()

    Dim ListTbl As ListObject
    Dim i&
    Dim rngX As Range
    
    Set rngX = Range([f5], [h5].End(4))
    
    rngX.ClearContents                               '= 출력 테이블 초기화
        
    For Each ListTbl In ActiveSheet.ListObjects      '= 각 표의 데이터 값을 가져옴
        
        ListTbl.DataBodyRange.Copy
        Cells(Rows.Count, "f").End(3)(2).PasteSpecial xlPasteValues

    Next ListTbl
        
        Cells(Rows.Count, "f").End(3)(2)(1, 2).Resize(1, 2) = Array("TOTAL", _
                                            Application.Sum(rngX.Columns(3)))
                                            
                                                     '= total과 합계구하기
        
End Sub

 

지금까지 잘 따라오고 있다면 쉽게 풀수 있는 문제이다.

 

이를 365함수식으로 풀게되면 이렇다.

 

 

기초방69.xlsm
0.03MB

댓글