【问题标题】:Update a pivot table's sourcedata based on sheet filter基于工作表过滤器更新数据透视表的源数据
【发布时间】:2019-01-20 06:09:34
【问题描述】:

过滤一列后,我最终得到 4 行而不是 105 行,但我的代码仍然看到 105 行,我如何在应用过滤器时自动刷新我的数据透视表。我将多次过滤我的工作表,所以我希望我的数据透视表适应我的过滤(不想直接在数据透视表上应用过滤器,而是使过程自动化)

LastRow = alarmes.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = 11
Set PRange = alarmes.Cells(1, 1).Resize(LastRow, LastCol)

Set PCache = Application.ThisWorkbook.PivotCaches.Create _
    (SourceType:=xlDatabase, SourceData:=PRange)
Set PTable = PCache.CreatePivotTable _
    (TableDestination:=graphe_dos.Cells(1, 1), TableName:="Test")

【问题讨论】:

  • 我相信您正在寻找带有Type 参数xlCellTypeVisibleRange.SpecialCells Method
  • 我试过 LastRow = alarmes.Cells.SpecialCells(xlCellTypeVisible).End(xlUp).Row 但我只得到 1 行而不是 4 行
  • 提供一些示例代码。您可以看到使用 For Each Cell In ActiveSheet.ListObjects("Table1").ListColumns(1).DataBodyRange.SpecialCells(Type:=xlCellTypeVisible) Cell.Select Next 和相同但不使用 SpecialCells 之间的区别(调试时,逐步查看选择了哪些单元格)。您不能使用它来获取LastRow,因为那将是 105,然后您将从第 2 行循环到第 105,您需要使用它来获取范围 2 到 LastRow 过滤后变成 58;68;104; 105 然后仅在您的代码中循环该范围。
  • 如果您仍然感到困惑,请尝试将SpecialCells 添加到您设置PRange 的代码行的末尾。
  • SpecialCellsPRange 之后,数据透视表为空

标签: vba excel pivot-table


【解决方案1】:

您无法从非连续范围创建数据透视表。过滤数据透视表的源数据对数据透视表没有影响。因此,您要么需要删除源表中的隐藏行,然后使用整个剩余的表块,要么在数据透视表本身中过滤数据透视表。

如果要过滤 PivotField 以匹配表中的项目,则需要遍历 PivotItems(或 SlicerItems,如果有 Slicer 连接到 PivotField)并设置 .Visible(或 SlicerItems 的 .Selected ) 属性对于您要保留的东西为 TRUE,对于其他项目为 FALSE。

执行此操作时存在许多潜在的瓶颈,如果您不围绕它们编写代码,则可能需要几分钟来遍历其中只有 20,000 个 PivotItems 的 PivotField。请参阅我在http://dailydoseofexcel.com/archives/2013/11/14/filtering-pivots-based-on-external-ranges/ 的帖子,了解更多关于注意事项的信息,然后在以下链接中查看我的答案,这些链接围绕这些瓶颈进行编程:

Filtering on SlicerItems

Filtering on PivotItems

也许一个简单的解决方法是设置一个数据透视表切片器,并使用用户在该数据透视表切片器中选择的值来过滤相同值的表。见How to link a Table and a Pivot Table using Slicers in Excel?

【讨论】:

  • 感谢您的帮助,但是像我的 prange 只有可见单元格这样的简单得多的东西不是吗?这样的事情是不可能的? Set PRange = alarmes.Cells(1,1).Resize.SpecialCells(xlCellTypeVisible)Set PRange = alarmes.UsedRange.SpecialCells(xlCellTypeVisible)
  • 仅当您随后将 PRange 复制到连续块中的其他位置并然后从中制作一个数据透视表。
  • 好的,我明白了,但是我已经创建了多个工作表来连接数据,我也必须创建图形,所以我认为最好不要创建另一个工作表来复制数据(工作簿重量已经 20mb)。我已经访问了您的 网站链接过滤 PivotItems,但我还没有完全理解它以及如何在我的宏中使用它
  • 你有什么版本的 Excel?
  • 我有 2013 Excel
猜你喜欢
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 2017-07-13
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
相关资源
最近更新 更多