循环遍历使用某个pivotcache的所有数据透视表

时间:2018-06-13 21:20:12

标签: excel-vba pivot-table vba excel

如果工作簿具有多个工作表,其中多个数据透视表具有多个数据透视表,那么如何仅循环使用特定数据透视表的数据透视表?例如,如果我想更改字段,那么只有那些数据透视表有。

我显然可以遍历工作簿中的每个数据透视表并检查其SourceData,但我想知道是否有类似的内容:

For Each pt In ThisWorkbook.PivotCaches("this").pivottables_list
Next

1 个答案:

答案 0 :(得分:1)

奇怪的是,没有直接的方法可以从PivotCache中获得它。相反,您需要遍历工作簿中的每个PT,并查看它的PivotCache是​​否与您感兴趣的PivotCache相同,如下所示:

Option Explicit

Sub Loop_PivotCache(ptExample As PivotTable)
Dim pt As PivotTable
Dim pc As PivotCache

Set pc = ptExample.PivotCache

For Each wks In ActiveWorkbook.Worksheets
    For Each pt In wks.PivotTables
        If pt.PivotCache.Index = pc.Index Then
            Debug.Print pt.Name
        End If
    Next pt
Next wks
End Sub

像这样称呼该潜艇:

Sub Caller()
Loop_PivotCache Worksheets("SomeWorksheet").PivotTables("SomePivotTable")
End Sub

问题:您实际上想对每个数据透视表做什么?根据您要执行的操作,从效率角度来看,您可能需要了解一些内容。