有效隐藏透视项目

时间:2014-04-28 19:04:28

标签: vba excel-vba excel-2007 pivot-table excel

我已根据数据表中的数据透视表构建了一个报表。细节很长(成千上万行),用户希望数据由特定字段汇总,这样他就可以只钻取他感兴趣的总数。

我目前已成功循环遍历指定字段的所有数据透视表的所有数据透视表项并隐藏它们。然而,这需要花费大量时间(> 15分钟)来运行。有没有办法通过使用不同的流程来优化这个,或者是否有任何选项可以更快地批量(通过设置或选项)执行此任务?

以下是调用此函数调用的函数:

Sub groupByjrnl_id()
    Dim ws As Worksheet
    Dim pi As PivotItem
    Dim pt As PivotTable

    Excel.Application.ScreenUpdating = False
    Excel.Application.Calculation = xlCalculationManual

    For Each ws In Worksheets
        If Left(ws.Name, 3) = "rap" Then
            Excel.Application.StatusBar = "Groupement des jrnl_id " & ws.Name
            For Each pt In ws.PivotTables
                With pt.PivotFields("jrnl_id")
                    For Each pi In .PivotItems
                        pi.ShowDetail = False
                    Next pi
                End With
            Next pt
        End If
    Next ws
    Excel.Application.StatusBar = ""

    Excel.Application.ScreenUpdating = True
    Excel.Application.Calculation = xlCalculationAutomatic
End Sub

我正在使用Excel 2007.谢谢!

1 个答案:

答案 0 :(得分:3)

是的:您可以简单地使用pivotfield本身的.ShowDetail属性,而不是枚举pivotfield的枢轴项,例如:

替换

For Each pi In .PivotItems
    pi.ShowDetail = False
Next pi

使用

.ShowDetail = False