У меня есть поле фильтра 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)
Ошибка Недопустимый вызов процедуры или аргумент. Любая идея Как я могу исправить эту ошибку? ????
Любой более быстрый способ фильтровать по нескольким критериям фильтра? Благодаря!
Фильтры отчета о сводной таблице немного отличаются от фильтров ярлыков Row/Column. К сожалению, вы придерживаетесь метода цикла. –
ни в коем случае ..... петли берут навсегда. Я пытаюсь использовать метод Currentpage. Любая идея с этим? – Sailormoon
Скотт прав.Метод CurrentPage показывает только один элемент pivotItem, а не несколько и не может быть изменен, чтобы отображать больше одного, за исключением использования метода циклирования. Если вы хотите сделать что-то другое, возможно, вы можете использовать вспомогательный столбец для ваших данных (weekRange1 соответствует неделям 1-8) и фильтровать его с помощью параметра текущей страницы. – OpiesDad