【问题标题】:Refresh all pivot tables in excel spreadsheet when data changes数据更改时刷新excel电子表格中的所有数据透视表
【发布时间】:2014-11-18 15:31:41
【问题描述】:

有没有人知道当 Excel (2010) 电子表格中的数据发生更改时自动刷新所有数据透视表(每张包含 4 个数据透视表的 2 张工作表)的 VBA 代码?它还可以搜索特定单元格中的更改。

欢迎任何建议!

【问题讨论】:

    标签: excel pivot excel-2010 pivot-table


    【解决方案1】:

    如果您的数据透视表在整个工作簿中设置了绝对范围,我喜欢这种简单的方法:

    Sub RefreshAllPivots()
    ' RefreshAllPivots Macro
    ' Refresh all the pivots in the workbook
        ActiveWorkbook.RefreshAll
    End Sub
    

    【讨论】:

    • 欢迎来到 Stack Overflow!不要忘记格式化您的代码!
    【解决方案2】:

    添加到包含源数据的工作表中的这段代码应该可以工作

    Private Sub Worksheet_Change(ByVal Target As Range) Dim Sheet As Worksheet, Pivot As PivotTable For Each Sheet In ThisWorkbook.Worksheets For Each Pivot In Sheet.PivotTables Pivot.RefreshTable Pivot.Update Next Next End Sub

    更多信息请查看 http://msdn.microsoft.com/en-us/library/office/ff839775(v=office.15).aspx

    【讨论】:

    • 感谢您的帮助。我刚刚尝试了这段代码,但它似乎不起作用。将它放在包含数据的工作表中不会做任何事情(第三个工作表包含数据),将它放在 ThisWorkbook 中也不起作用。将其放在放置 4 个数据透视表的第一张纸上,可以进行选择,将导致无限刷新循环。
    【解决方案3】:

    如果工作表中有名为“数据”的数据,并且表位于工作表“数据透视表”中,表名为“PivotTable1”,则可以将其粘贴到数据表 vba 选项卡上。

    Private Sub Worksheet_Calculate()
    
        'If data on this worksheet changes, refresh the pivot table
        Sheets("Pivot").PivotTables("PivotTable1").RefreshTable
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-30
      • 2017-06-01
      • 1970-01-01
      • 2011-05-24
      • 2017-04-08
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多