【问题标题】:Looping through all pivot tables that use a certain pivotcache遍历所有使用某个数据透视缓存的数据透视表
【发布时间】:2018-06-13 21:20:12
【问题描述】:

如果一个工作簿有多个工作表和多个数据透视表和多个数据透视缓存,我如何才能只循环使用特定数据透视缓存的数据透视表?例如,如果我想更改只有那些数据透视表具有的字段。

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

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

【问题讨论】:

    标签: excel pivot-table vba


    【解决方案1】:

    奇怪的是,没有直接的方法可以从 PivotCache 中获取它。相反,您需要遍历工作簿中的每个 PT,并查看它的 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
    

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

    【讨论】:

    • 如前所述“例如,如果我想更改只有那些数据透视表具有的字段。”
    • 酷。你应该很好地使用我的代码。如果您计划对这些数据透视字段进行任何筛选,请确保在筛选之前将 PivotTable.ManualUpdate 属性设置为 TRUE,然后再将其设置为 FALSE。不久前,我在dailydoseofexcel.com/archives/2013/11/14/… 上写了一篇关于此的帖子,详细讨论了这一点。
    • @LWC 如果我的回答解决了问题,你能接受吗?
    猜你喜欢
    • 2018-11-24
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    相关资源
    最近更新 更多