Excel 筛选数据透视表项太慢

Excel 筛选数据透视表项太慢,excel,vba,pivot-table,Excel,Vba,Pivot Table,筛选数据透视表的代码运行非常缓慢。有没有更有效的方法 最初,我使用宏记录器在枢轴字段上设置过滤器。它工作得很好,运行得很快,不幸的是,它需要列出我想要隐藏的所有项目。每当添加新项目时,我都必须更新代码 所以我做了一些研究,得出了下面的代码。然而,这是可行的,运行起来需要相当长的时间 Sub PivotFilter() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim pIt

筛选数据透视表的代码运行非常缓慢。有没有更有效的方法

最初,我使用宏记录器在枢轴字段上设置过滤器。它工作得很好,运行得很快,不幸的是,它需要列出我想要隐藏的所有项目。每当添加新项目时,我都必须更新代码

所以我做了一些研究,得出了下面的代码。然而,这是可行的,运行起来需要相当长的时间

Sub PivotFilter()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim pItem As PivotItem
Dim pTable As PivotTable

Set pTable = ActiveSheet.PivotTables(1)

For Each pItem In pTable.PivotFields("AnalystID").PivotItems
    Select Case pItem.Caption
        Case "ANALYST1", "ANALYST2", "ANALYST3"
            pItem.Visible = True
        Case Else
            pItem.Visible = False

    End Select
Next pItem

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub
我希望它几乎是即时的,因为只有20个项目。(后来我注意到实际上有100多个项目,因为表中有几个项目没有支持数据)


实际上,它非常慢,而且手动操作几乎更容易——几乎可以。

你确定吗?我刚刚测试了你的代码,不到一秒钟就运行了。您是否尝试重置Microsoft Excel?确保您没有任何其他打开的ExcelYes实例——我刚才在宏中添加了一个计时器代码,执行耗时80.55秒。请记住,这是一个相当大的透视表。源表中大约有35000行和55列。我一直在寻找这段代码运行这么长时间的原因,但我还没有找到解决方案。我认为这可能与它们有关,因为有几个缓存项不再可见,需要它循环使用100个左右的项,而不是我可以看到的15个左右的项。但即使如此,似乎也不能解释为什么要挂断80秒。