Excel 透视表要刷新活动工作簿,请选择“项目”;句号“;,清除所有选择并选择最后2个值
在执行了一些操作之后,这部分代码进入名为“概述”的工作表,刷新一个巨大的数据透视表-只有一个数据透视表,它被称为“数据透视表2”(实际上,它不刷新数据透视表,我不知道为什么)。前面向源添加行的部分可以工作,因此手动刷新后,一切都可以工作。接下来,它将选择每个具有值“Period”的单元格,我需要它做的是清除选择“Period”中的过滤器,并选择刷新透视表后弹出的最后两个值Excel 透视表要刷新活动工作簿,请选择“项目”;句号“;,清除所有选择并选择最后2个值,excel,vba,pivot-table,selection,Excel,Vba,Pivot Table,Selection,在执行了一些操作之后,这部分代码进入名为“概述”的工作表,刷新一个巨大的数据透视表-只有一个数据透视表,它被称为“数据透视表2”(实际上,它不刷新数据透视表,我不知道为什么)。前面向源添加行的部分可以工作,因此手动刷新后,一切都可以工作。接下来,它将选择每个具有值“Period”的单元格,我需要它做的是清除选择“Period”中的过滤器,并选择刷新透视表后弹出的最后两个值 ActiveWorkbook.Sheets("Overview").Activate Dim pi
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属性
如果你指出问题或提出解决方案,我会很高兴。谢谢大家! 这段代码可以工作,但不是像我的代码所建议的那样只处理字段“Period”,而是对透视表中的所有字段执行操作,并在过滤器中选择最后2个值
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
谢谢,但是仍然有一个错误。谢谢。现在的问题是行
Set pf=pt.PageFields(“Period”)
,无法获取PageFields属性。但它是有效的!但ClearManualfilter没有。我选择的东西比我需要的多