从数据透视表中删除报表filter,列标签,行标签和值字段
在我的活动工作表中,我想删除活动工作表中包含的每个数据透视表中的所有字段。
这是我的代码到目前为止:
Sub Hide_Fields() For Each Pvt In ActiveSheet.PivotTables For Each PvtFld In Pvt.PivotFields PvtFld.Orientation = xlHidden Next PvtFld Next Pvt End Sub
它将删除除值字段以外的所有字段。 我在这里错过了什么?
PivotFields
集合似乎排除了仍然可以引用的项目。 例如,这些不会在眼前的窗口中出错:
? ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of c") ? ActiveSheet.PivotTables("PivotTable1").PivotFields("Values")
(请注意,我的数据透视表有一个名为c
的列)
但是他们不会输出你的代码:
For Each fld In pvt.PivotFields Debug.Print fld.Name Next fld
枚举集合时,为什么不公开这些内容并不清楚。
但是,您可以直接引用数据PivotFields
RowFields
,例如RowFields
, ColumnFields
, PageFields
和DataFields
。 通过这样做,你可以实现你的目标:
Option Explicit Sub Test() HideFields ActiveSheet.PivotTables(1) End Sub Sub HideFields(pvt As PivotTable) Dim fld As Object 'rows For Each fld In pvt.RowFields Debug.Print fld.Name fld.Orientation = xlHidden Next fld 'columns For Each fld In pvt.ColumnFields Debug.Print fld.Name fld.Orientation = xlHidden Next fld 'pages For Each fld In pvt.PageFields Debug.Print fld.Name fld.Orientation = xlHidden Next fld 'data For Each fld In pvt.DataFields Debug.Print fld.Name fld.Orientation = xlHidden Next fld End Sub