2012-01-27 65 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