EXCEL - VBA

피벗 테이블 새로 고침(2)

별동산 2023. 6. 13. 08:49
반응형
피벗테이블 새로 고침.xlsx
0.01MB

 
 
 

1. PivotTable과 PivotCache

 
가. PivotTables와 PivotTable
The PivotTable object is a member of the PivotTables collection
(피벗 테이블 객체는 피벗 테이블 집합의 구성원이다)
 
The PivotTables collection contains all the PivotTable objects on a single worksheet.
(피벗 테이블 집합은 한 개의 워크 시트에 있는 모든 피벗 테이블 객체를 포함한다)
 

나. PivotCaches와 PivotCache

PivotCaches Object
Represents the collection of memory caches from the PivotTable reports in a workbook.
(PivotCaches 개체는 워크 북에서 PivotTable 보고서에서의 메모리 캐시 모음을 가리킨다).
 

다. PivotTable과 PivotCache 비교

PivotTable은 worksheet에 소속되어 있고, PivotCache는 workbook 단이라는 점이 다릅니다.
 
 

2. 여러 개 피벗 테이블 다루기

위와 같이 PivotTable과 PivotCache는 다르기 때문에
프로시저의 구문도 다릅니다.
 
Sheet2에 지점별 매출액 집계표 피벗 테이블을 하나 더 추가했습니다.

 

가. PivotTables 집합 이용

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pt As PivotTable
    For Each pt In Sheets(2).PivotTables
        pt.PivotCache.Refresh
    Next
End Sub

 
Dim pt As PivotTable : 변수 pt를 PivotTable 객체로 선언합니다.
 
For Each pt In Sheets(2).PivotTables : PivotTables에 있는 PivotTable을 하나씩 실행합니다. 이때 PivotTables는 sheet 단이기 때문에 반드시 Sheets(2)라고 PivotTable이 있는 위치를 가르쳐야 합니다.
 
Sheet2("Sheet2")는 두 번째 있는 워크시트이기 때문에 Sheet2(2)로 바꿔 사용할 수 있습니다.
 
 

나. PivotCaches 객체 이용

 
(1) 방법 1 : For Each

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pc As PivotCache
    For Each pc In ActiveWorkbook.PivotCaches
        pc.Refresh
    Next
End Sub

 
Dim pc As PivotCache : 변수 pc를 PivotCache 객체로 선언합니다.
 
For Each pc In ActiveWorkbook.PivotCaches : 현재 워크북에 있는 PivotCaches를 하나씩 실행합니다.
PivotCaches는 workbook 단이기 때문에 반드시 ActiveWorkbook.을 앞에 써야 합니다.

pc.Refresh : PivotCache를 새로 고칩니다.
 
 
(2) 방법 2 : For i = 1 ...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    For i = 1 To ActiveWorkbook.PivotCaches.Count
        ActiveWorkbook.PivotCaches(i).Refresh
    Next
End Sub

 
Dim i As Integer : 변수 i를 정수 형식으로 선언합니다.
 
For i = 1 To ActiveWorkbook.PivotCaches.Count : i가 1부터 PivotCaches의 개수만큼 반복 실행합니다.
PivotCaches는 workbook 단이기 때문에 반드시 ActiveWorkbook.을 앞에 써야 합니다.
 
ActiveWorkbook.PivotCaches(i).Refresh : PivotCaches중 i번째를 새로 고침 합니다.
 
그런데, 직접 실행창에서 ActiveWorkbook.PivotCaches.Count 값을 알아보니 신기하게 1입니다.

 
그러나, PivotTable의 개수는 2개입니다.

피벗테이블 새로 고침2.xlsm
0.02MB

 

반응형