【问题标题】:How to auto refresh Excel auto-filter results after Excel PivotTable auto updateExcel 数据透视表自动更新后如何自动刷新 Excel 自动筛选结果
【发布时间】:2017-06-10 22:42:47
【问题描述】:

我使用 Excel 数据透视表创建了一个“摘要”选项卡。

数据透视表显示存储在“详细信息”选项卡中的各种类别中选定值的总和。

详细信息选项卡包含...

Select?   Type   Price
   Y      Shoe   $1.25
   N      Shoe   $1.50
   Y      Boot   $2.00
   N      Clog   $3.00
   Y      Shoe   $0.50

“摘要”选项卡显示这样的数据透视表...

Select?       Y

Row Labels    Sum of Price
Boot          $2.00
Shoe          $1.75

每当“详细信息”选项卡中的某些内容发生更改,并且有人切换到“摘要”选项卡时,我希望数据透视表自动更新以匹配新数据。

如果只是值改变(使用下面的第一个代码 sn-p),这很容易,但如果 Y 和 N 改变,过滤不会更新。在手动更新过滤之前,不会显示从 N 更改为 Y 的任何内容。

这是我目前所拥有的......

自动更新数据透视表的代码例如是...

Private Sub Worksheet_Activate()
    Sheets("Summary").PivotTables("PivotTable1").RefreshTable
End Sub

自动刷新表中的 Excel 自动过滤列(不是数据透视表)的代码是例如...

Private Sub Worksheet_Change(ByVal Target As Range)
    With ActiveWorkbook.Worksheets("Details").ListObjects("Table1")
         .AutoFilter.ApplyFilter
    End With
End Sub

...但我不知道如何将 AutoFilter.ApplyFilter 应用于数据透视表。有任何想法吗?还是等价的?

我发现最接近数据透视表过滤器的是这段代码,它将把我要更新的部分变成黄色...

Worksheets("Details").PivotTables("PivotTable1") _
    .PageRange.Interior.Color = vbYellow

...但我不想将其变为黄色 :-),我想将过滤器重新应用于修改后的数据,以便我看到 应该 看到的内容,而不是错误的值和缺失的行。

非常感谢。

【问题讨论】:

    标签: vba excel pivot-table autofilter


    【解决方案1】:

    录制宏(不是更新过滤器,而是重新应用“Y”过滤的选择)并编辑它的结果是......

    Private Sub Worksheet_Activate()
        ActiveSheet.PivotTables("PivotTable1").RefreshTable
        On Error Resume Next
            ActiveSheet.PivotTables("PivotTable1").PivotFields("Selection") _
        .CurrentPage = "Y"
    End Sub
    

    它对我有用。我不得不添加 On Error 以(笨拙地)捕捉没有“Y”可供过滤的情况。

    如果有人需要更通用的解决方案来刷新过滤而不重新应用特定的过滤器选项,上述方法将不起作用,但这在我的用例中没有问题。

    非常感谢。

    【讨论】:

      【解决方案2】:

      我能想到两件事...在激活或停用工作表时运行宏。

      Private Sub Worksheet_Activate()
      Worksheet_Change 'Macro name
      End Sub
      

      这将专门与您的摘要相关联。同样,您将使用绑定到另一张工作表的 Worksheet_Deactivate()。您还可以将数据透视表更新添加到同一个宏中。

      【讨论】:

      • 谢谢。是的,这行得通。我录制了宏并对其进行了编辑。应该想到这一点 :-) 再次感谢 Cyril。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2011-06-07
      相关资源
      最近更新 更多