我有一個名爲week_of_year(1,2,3,4,5,6,7,8 ....)的過濾器字段,另一個數據透視字段年(2012,2013,2014),vba代碼在2014/2015的當前星期和年份,下方會進行過濾並隱藏其他所有內容。但問題是代碼會循環每條記錄,並且在涉及大型數據透視表時運行緩慢。我嘗試一個新的代碼,但遇到一些錯誤。VBA過濾器錯誤
Sub datefilter()
Dim PvtTbl As PivotTable
Set PvtTbl = Worksheets("LO").PivotTables("PivotTable3")
Dim dd As Integer
dd = Format(Date, "ww")
Dim pf As PivotField
Dim pf1 As PivotField
Dim PI As PivotItem
Set pf =
Worksheets("LO").PivotTables("PivotTable3").PivotFields("week_of_year")
Set pf1 =
Worksheets("LO").PivotTables("PivotTable3").PivotFields("year")
PvtTbl.ClearAllFilters
For Each PI In pf.PivotItems
If PI.Name = CStr(dd) Then
PI.Visible = True
Else
PI.Visible = False
End If
Next
For Each PI In pf1.PivotItems
If PI.Name = "2014" Or PI.Name = "2015" Then
PI.Visible = True
Else
PI.Visible = False
End If
Next
End Sub
,我開發新的代碼是:
Sub datefilter1()
Dim PvtTbl As PivotTable
Set PvtTbl = Worksheets("LO").PivotTables("PivotTable3")
Dim dd As Integer
dd = Format(Date, "ww")
Dim pf As PivotField
Set pf =
Worksheets("LO").PivotTables("PivotTable3").PivotFields("week_of_year")
pf.PivotFilters.Add2 xlValueEquals, 3
End Sub
的代碼在
pf.PivotFilters.Add2 xlValueEquals, CStr(dd)
失敗
我也試過:
pf.PivotFilters.Add2 Type:= xlValueEquals, Value1 := CStr(dd)
的錯誤是無效的過程調用或argument.Any idea我怎樣才能解決這個錯誤? ????
任何更快的方式來過濾多個過濾條件?謝謝!
數據透視表報表過濾器的工作方式與行/列標籤過濾器有點不同。不幸的是,你堅持使用循環方法。 –
沒辦法.....循環永遠。我試用Currentpage方法。有什麼想法呢? – Sailormoon
斯科特是正確的。CurrentPage方法只顯示一個pivotItem,不是多個,除了使用循環方法外,不能更改爲顯示多個。如果你想做一些不同的事情,也許你可以在你的數據上使用一個輔助列(weekRange1對應1-8周),並使用當前頁面選項對其進行過濾。 – OpiesDad