首页 > 解决方案 > 循环遍历所有数据透视表的所有数据透视字段值

问题描述

我有一个 excel 工作簿,在一张名为“RAW”的工作表中,我有一张这样的表格:

年份 | 产品组 | 项目 | 网站 | 类别 | 一月 | 二月 | 三月

该表每个月都会更改,因此下个月我将获得 2 月 3 月 4 月(等等)的数据。

在工作簿的其他工作表中,我有一些数据透视表,它们都链接到工作表“RAW”的表。我想要做的是,一旦 RAW 数据发生变化,执行一个宏,允许我自动更新所有数据透视表并选择三个月作为每个数据透视表的值(数据透视字段?)。

我有以下代码:

Sub Update_PT()

Dim TD As PivotTable
Dim Hoja As Worksheet

month1 = Sheets("Raw").Range("F1").Value
month2 = Sheets("Raw").Range("G1").Value
month3 = Sheets("Raw").Range("H1").Value

For Each Hoja In ThisWorkbook.Sheets
    For Each TD In Hoja.PivotTables
        TD.PivotCache.Refresh
    Next TD
Next Hoja

End Sub

我缺少的是遍历所有数据透视表并将数据透视字段(或值)设置为我的变量月 1、月 2 和月 3。

任何人都可以帮助我吗?

非常感谢。此致。

标签: excelvbapivot-table

解决方案


我试过这个:

 Sub Actualizar_Tablas()

 Dim TD As PivotTable Dim Hoja As Worksheet

 month1 = Sheets("Raw").Range("G1").Value month2 =
 Sheets("Raw").Range("H1").Value month3 =
 Sheets("Raw").Range("I1").Value

 For Each Hoja In ThisWorkbook.Sheets
     For Each TD In Hoja.PivotTables
         TD.PivotCache.Refresh
         TD.AddDataField _
             Field:=TD.PivotFields(month1), _
             Function:=xlSum
         TD.AddDataField _
             Field:=TD.PivotFields(month2), _
             Function:=xlSum
         TD.AddDataField _
             Field:=TD.PivotFields(month3), _
             Function:=xlSum
     Next TD Next Hoja

 End Sub

但我有以下问题:

- 值的名称是“Sum of & month1”,我希望它们只是第 1 个月。我正在尝试使用 Caption 更改它,但我无法做到。

- 如果我第二次运行宏,我会得到 3 个新值作为“和月 1 和 2 的总和”,我只想要一次值。


推荐阅读