【发布时间】:2012-08-16 19:58:07
【问题描述】:
我正在尝试从 2 个单元格输入(开始日期、结束日期)更新我的数据透视表(日期)中的过滤器,以便设置开始日期(例如 01/01/12)和结束日期(28/03/12 ) 数据透视表将自动应用过滤器,仅显示范围内的日期。 为此,我在网上找到了一些VBA代码sn-ps:
Option Explicit
Sub FilterPivotDates()
'
Dim dStart As Date
Dim dEnd As Date
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Application.ScreenUpdating = False
On Error Resume Next
dStart = Sheets("Pivot").Range("StartDate").Value
dEnd = Sheets("Pivot").Range("EndDate").Value
Set pt = ActiveSheet.PivotTable2
Set pf = pt.PivotFields("Week")
pt.ManualUpdate = True
pf.EnableMultiplePageItems = True
For Each pi In pf.PivotItems
pi.Visible = True
Next pi
For Each pi In pf.PivotItems
If pi.Value < dStart Or pi.Value > dEnd Then
pi.Visible = False
End If
Next pi
Application.ScreenUpdating = False
pt.ManualUpdate = False
Set pf = Nothing
Set pt = Nothing
End Sub
我在工作表的 Modules 文件夹和工作表“Pivot”中放置了“Option Explicit”。 我将范围名称“StartDate”和“EndDate”分配给具有日期输入的两个单元格,并为宏分配了一个按钮。数据透视表名为“数据透视表”,应过滤的相应字段名为“周”。但是当我点击按钮时,什么也没有发生……有人看到代码中的错误还是我应该以不同的方式实现它?
先谢谢了!
【问题讨论】:
标签: excel excel-2007 vba