数据透视表以刷新活动工作簿,选择项目"Period",清除所有选择并选择最后 2 个值



执行一些操作后,这部分代码将转到名为";"概述";,刷新一个巨大的透视表-只有一个,它被称为"透视表";数据透视表2";(实际上,它不会刷新它,我不知道为什么(。前面向源代码添加行的部分可以工作,因此在手动刷新后,一切都可以工作。接下来,它选择每个具有值"0"的单元格;周期";并且我需要它做的是清除选择中的过滤器";周期";并选择数据透视表刷新后弹出的最后两个值。


ActiveWorkbook.Sheets("Overview").Activate
Dim pi As PivotItem
Dim pt As PivotTable
Dim pf As PivotField
For Each pt In ActiveSheet.PivotTables
pt.RefreshTable
Set pf = pt.PageFields("PivotTable2").PivotFields("Period")

For Each pf In pt.PageFields
pf.ClearManualFilter
pf.ClearAllFilters
pf.EnableMultiplePageItems = True
pf.AutoSort xlAscending, pf.SourceName
pf.CurrentPage = pf.PivotItems(pf.PivotItems.Count).Name
If pf.CurrentPage = "(blank)" And pf.PivotItems.Count > 2 Then
pf.CurrentPage = pf.PivotItems(pf.PivotItems.Count - 2).Name
End If
If pf.CurrentPage = "(blank)" And pf.PivotItems.Count > 1 Then
pf.CurrentPage = pf.PivotItems(pf.PivotItems.Count - 1).Name
End If
Next pf
Next pt

End Sub

运行时错误"1004":

无法获取数据透视表类的PageFields属性

如果你能指出问题或提出解决方案,我会很高兴。非常感谢。

此代码有效,但不只是处理字段"周期";正如我的代码所建议的,它对透视表中的所有字段执行操作,并在过滤器中选择最后两个值。

Dim pi As PivotItem
Dim pt As PivotTable
Dim pf As PivotField

For Each pt In ActiveSheet.PivotTables
pt.RefreshTable
Set pf = ActiveSheet.PivotTables("PivotTable2").PivotFields("Period")

For Each pf In pt.PageFields
pf.ClearManualFilter
pf.ClearAllFilters
pf.EnableMultiplePageItems = True
pf.AutoSort xlAscending, pf.SourceName
pf.CurrentPage = pf.PivotItems(pf.PivotItems.Count).Name
If pf.CurrentPage = "(blank)" And pf.PivotItems.Count > 2 Then
pf.CurrentPage = pf.PivotItems(pf.PivotItems.Count - 2).Name
End If
If pf.CurrentPage = "(blank)" And pf.PivotItems.Count > 1 Then
pf.CurrentPage = pf.PivotItems(pf.PivotItems.Count - 1).Name
End If
Next pf
Next pt

相关内容

  • 没有找到相关文章

最新更新