2012-01-27 62 views
1

如何使用VBA筛选Excel 2003中的数据透视表?Excel 2003中的筛选器转换表

在Excel 2007中,我可以运行这个宏,但PivotFilters没有在2003 XL

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

在2003年VBA筛选透视字段,则必须设置/复位.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 
+0

我得到一个错误:“无法设置Visible属性PivotItem类” 这似乎是一个已知的错误,我使用的是Microsoft技术支持工程师。我会让你知道我有什么解决方案。 http://social.msdn.microsoft.com/Forums/en/isvvba/thread/01fca3d7-944e-4fb6-bf9b-0e7892b0234c – Damian 2012-01-28 09:16:00

+0

我很抱歉,我不明白?你指的是什么“错误”? – 2012-01-28 09:17:14

+0

我试图设置排序顺序为手动和方向为surgested,但没有帮助 – Damian 2012-01-28 09:18:25