遍历数据透视表并删除相同的值

Posted

技术标签:

【中文标题】遍历数据透视表并删除相同的值【英文标题】:Loop Through Pivot Tables And Remove Same Values 【发布时间】:2017-07-10 00:17:03 【问题描述】:

我正在尝试遍历工作表中的所有数据透视表,并删除其中所有具有相同名称的值字段:“总净支出”和“拆分百分比”(参见图片以供参考)。

我正在尝试下面的代码,但它只适用于第一个枢轴并且不会循环遍历所有这些。如何编辑代码以删除工作表中所有数据透视表上的“总净支出”和“拆分百分比”列?

Sub Loop_Pivots()

Dim PT As PivotTable, PTField As PivotField

Set PT = Sheets("Sheet1").PivotTables("Pivot1")
With PT
    .ManualUpdate = True
    For Each PTField In .DataFields
        PTField.Orientation = xlHidden
    Next PTField
    .ManualUpdate = False
End With
Set PT = Nothing

End Sub

【问题讨论】:

【参考方案1】:

要循环通过PivotTables 尝试另一个for each 像这样循环

Sub Loop_Pivots()

    Dim PT As PivotTable, PTField As PivotField
    For Each PT In Sheets("Sheet1").PivotTables
        With PT
            .ManualUpdate = True
            For Each PTField In .DataFields
                PTField.Orientation = xlHidden
            Next PTField
            .ManualUpdate = False
        End With
    Next PT
    Set PT = Nothing
End Sub

【讨论】:

刚试了但是弹出一个错误说:无法设置PivotField类的orientation属性...【参考方案2】:

试试下面的代码:

Option Explicit

Sub Loop_Pivots()

Dim PT          As PivotTable
Dim PTField     As PivotField

For Each PT In Sheets("Sheet1").PivotTables

    With PT
        .ManualUpdate = True
        For Each PTField In .PivotFields '<-- loop through all pivot fields
            Select Case PTField.Name
                Case "Total Net Spend", "% Split"  '<-- if Field Name equals on of the 2 in this case
                    PTField.Orientation = xlHidden
            End Select
        Next PTField
        .ManualUpdate = False
    End With
    Set PT = Nothing
Next PT

End Sub

【讨论】:

感谢您的帮助,但这段代码没有任何反应......使用原始代码,我能够在第一个枢轴上摆脱“Total Net Spend”和“% Split”,但它不会t 循环遍历剩余的枢轴... @Andrea 奇怪,为我工作。它是否返回错误?

以上是关于遍历数据透视表并删除相同的值的主要内容,如果未能解决你的问题,请参考以下文章

使用记录集修改 Excel 数据透视表并刷新:异常

同步数据透视表 - VBA 代码不起作用

AWS Redshift 数据透视表所有维度

如何把SQL数据表中一个字段的值按逗号分隔存入另外一个表,并删除重复记录?

使用 column_name 函数取消透视表

Excle数据透透视表如何删除数据透视表