Vba 根据给定值筛选工作簿中的每个轴
我正在尝试使用透视表的过滤器,而不是使用单个透视表 理想情况下,我希望宏的一部分在所有工作表上的所有轴之间循环,取消过滤,然后过滤单元格中已预填充的日期 以下是我尝试过的:Vba 根据给定值筛选工作簿中的每个轴,vba,excel,pivot-table,Vba,Excel,Pivot Table,我正在尝试使用透视表的过滤器,而不是使用单个透视表 理想情况下,我希望宏的一部分在所有工作表上的所有轴之间循环,取消过滤,然后过滤单元格中已预填充的日期 以下是我尝试过的: Dim LastWeek As Date LastWeek = Range("K4").Value Dim ws As Worksheet Dim pt As PivotTable For Each ws In ThisWorkbook.Worksheets For Each pt In ws.PivotTables
Dim LastWeek As Date
LastWeek = Range("K4").Value
Dim ws As Worksheet
Dim pt As PivotTable
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.PivotFields("Week Ending Date(Cal)").ClearAllFilters
pt.PivotFields("Week Ending Date(Cal)").CurrentPage = _
LastWeek
Next pt
Next ws
ActiveWorkbook.RefreshAll
尝试了不同的东西,这两行应该取消过滤和过滤的最后一个日期。没有错误出现。LastWeek变量获取正确的日期值,并且该日期可用
循环代码会运行几次,这意味着它可能会拾取枢轴,但不会进行过滤。我还尝试使用peltier的pagerange引用:
我有几个过滤器,但想在第一个过滤器上进行过滤,称为“周结束日期(Cal)”
谁能把他们的两分钱投进去吗?
经过几天的谷歌搜索,我还没有找到最终的解决方案
我可以做一个录制的宏,它将分别转到每个轴,但我想学习如何使用循环来完成它
谢谢我目前正在使用Excel 2010,但很快将转换为365 64位。希望这些东西能继续发挥作用 谢谢你们的及时回复和一个好主意。我使用了切片机,它实际上是更优雅的解决方案。为了便于学习,我仍然想了解如何使用循环 如果其他人需要,这就是解决方案:
ActiveWorkbook.RefreshAll
'Refreshed all so that new dates appear in the slicer
Dim LastWeek As String
'Had to restate LastWeek as a String instead of Date
LastWeek = Range("K4").Value
'Week Ending Date (Cal) is the name of the slicer connected with a given filter
'Change this name to fit your purposes and dont forget to connect your slicer with all the pivots
ActiveSheet.Shapes.Range(Array("Week Ending Date(Cal)")).Select
With ActiveWorkbook.SlicerCaches("Slicer_Week_Ending_Date_Cal")
.SlicerItems(LastWeek).Selected = True
.SlicerItems("(blank)").Selected = False
End With
ActiveWorkbook.RefreshAll
后来在宏中,我删除了日期引用单元格和切片器,使其更干净,并保存为输出文件夹中的另一个文件
谢谢大家 您使用的是什么版本的Excel?您可以尝试添加一个连接到所有透视表的切片器,然后只更新切片器中的选择。如果可用,切片器方法是一个很好的选择。如果不是,或者对于另一个解决方案,筛选表取决于您的字段是
报告过滤器
还是列或行标签
。有关更多信息,请参见此。