如何解决数据透视表刷新活动工作簿,选择项目“期间”,清除所有选择并选择最后两个值
执行一些操作后,这部分代码转到名为“概览”的工作表,刷新一个巨大的数据透视表 - 只有一个,它被称为“数据透视表 2”(实际上,它没有刷新它,我不刷新它)不知道为什么)。前面向源代码添加行的部分有效,因此在手动刷新后一切正常。接下来,它选择具有值“Period”的每个单元格,我需要它做的是清除选择“Period”中的过滤器,并选择刷新数据透视表后弹出的最后两个值。
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”:
如果您指出问题或提出解决方案,我会很高兴。谢谢!
解决方法
此代码有效,但不是仅使用字段“Period”,因为我的代码建议它对数据透视表中的所有字段执行操作并选择过滤器中的最后两个值。
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。