在 Excel 2003 中筛选数据透视表
Posted
技术标签:
【中文标题】在 Excel 2003 中筛选数据透视表【英文标题】:Filter pivottable in Excel 2003 【发布时间】:2012-02-20 12:19:13 【问题描述】:如何使用 VBA 在 Excel 2003 中过滤数据透视表?
在 Excel 2007 中我可以运行此宏,但在 XL 2003 中未实现 PivotFilters。
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
ws.PivotTables("PivotTable1").PivotFields("Date").PivotFilters.Add _
Type:=xlSpecificDate, Value1:="26/01/2012"
更新: 我收到错误“运行时错误'1004”。无法设置 PivotItem 类的 Visible 属性。
子过滤器() 将 PvtItem 调暗为 PivotItem 将 ws 作为工作表进行调暗
Set ws = Sheets("pivot")
'~~> Show All
For Each PvtItem In ws.PivotTables("PivotTable1").PivotFields("Date").PivotItems
PvtItem.Visible = True
Next
'~~> Show Only the relevant
For Each PvtItem In ws.PivotTables("PivotTable1").PivotFields("Date").PivotItems
If PvtItem.Value <> "26/01/2012" Then PvtItem.Visible = False '<-- error here
Next
结束子
http://wikisend.com/download/426518/pivot.xls
【问题讨论】:
【参考方案1】:要在 VBA 2003 中过滤数据透视字段,您必须设置/取消设置 .Visible 属性。这是一个例子
Option Explicit
Sub Filter()
Dim PvtItem As PivotItem
Dim ws As Worksheet
On Error GoTo Whoa1
Set ws = Sheets("pivot")
'~~> Show All
For Each PvtItem In ws.PivotTables("PivotTable1").PivotFields("Date").PivotItems
PvtItem.Visible = True
Next
On Error GoTo Whoa2 '<~~ If no match found in Pivot
'~~> Show Only the relevant
For Each PvtItem In ws.PivotTables("PivotTable1").PivotFields("Date").PivotItems
If Format(PvtItem.Value, "DD/MM/YYYY") <> Format(Range("today"), "DD/MM/YYYY") Then
PvtItem.Visible = False
End If
Next
Exit Sub
Whoa1:
MsgBox Err.Description
Exit Sub
Whoa2:
'~~> Show All
For Each PvtItem In ws.PivotTables("PivotTable1").PivotFields("Date").PivotItems
PvtItem.Visible = True
Next
End Sub
【讨论】:
我收到一个错误:“无法设置可见属性 PivotItem 类” 这似乎是一个已知错误,我正在使用 Microsoft 支持工程师。我会让你知道我有什么解决方案。 social.msdn.microsoft.com/Forums/en/isvvba/thread/… 对不起,我听不懂?你指的“bug”是什么? 我尝试将排序顺序设置为手动,并将方向设置为激增但无帮助 但是我没有建议与排序顺序和方向有关:) 你能详细解释一下问题是什么吗? 我将设置一个显示问题的小示例项目。我可以在哪里与您共享表格?以上是关于在 Excel 2003 中筛选数据透视表的主要内容,如果未能解决你的问题,请参考以下文章