请求编写VBA代码:数据透视表刷新后折叠除最后/latest条目外的行
解决数据透视表刷新后仅保留最后一个/latest条目展开的问题
以下是修改后的VBA宏代码,实现刷新透视表后自动折叠所有行,仅保留最后一个包含/latest的条目展开:
Sub RefreshPivotAndKeepLatestExpanded() Dim pt As PivotTable Dim targetField As PivotField Dim pivotItem As PivotItem Dim lastLatestItem As PivotItem ' 替换为你的透视表所在工作表和透视表名称 Set pt = ThisWorkbook.Worksheets("透视表工作表名").PivotTables("你的透视表名称") ' 替换为包含/latest的行字段名称 Set targetField = pt.PivotFields("行字段名称") ' 刷新透视表数据 pt.RefreshTable ' 折叠该字段下的所有行 targetField.ShowDetail = False ' 遍历所有项,定位最后一个含/latest的条目 For Each pivotItem In targetField.PivotItems If InStr(pivotItem.Name, "/latest") > 0 Then Set lastLatestItem = pivotItem End If Next pivotItem ' 展开找到的最后一个/latest条目 If Not lastLatestItem Is Nothing Then lastLatestItem.ShowDetail = True End If End Sub
关键说明
- 参数替换:务必根据你的实际情况修改代码中的工作表名、透视表名和行字段名,否则代码无法正常运行。
- 多层级透视表适配:如果你的透视表是多层分组结构,需要针对具体的层级字段调整
targetField的指向,确保操作的是包含/latest的那个层级。 - 异常处理:如果透视表中没有任何含
/latest的条目,代码会跳过展开步骤,不会报错。
内容的提问来源于stack exchange,提问作者Bbow987
相关产品推荐
相关产品推荐

