使用VBA创建动态数据透视表

时间:2017-06-01 01:11:09

标签: excel vba excel-vba

我正在编写一个代码来创建一个动态数据透视表但我正在努力,因为我需要数据透视表来读取具有不同列名(日期)的动态数据范围,这些数据根据日期范围而变化。

所以对于以下代码行:

Worksheets("Pivot").PivotTables("PivotTable1").AddDataField Worksheets("Pivot").PivotTables( _"PivotTable1").PivotFields("15/01/2016"), "Sum of 15/01/2016", xlSum

我需要使用变量而不是日期15/01/2017,我需要使用循环将所有日期范围填充到数据透视表中的数据字段中。

1 个答案:

答案 0 :(得分:0)

如果您有特定的日期数,则可以使用变量名替换硬编码日期。所以在你的情况下有2个日期:

Date1 = "01/01/2017"
Date2 = "05/02/2017"

Worksheets("Pivot").PivotTables("PivotTable1").AddDataField Worksheets("Pivot").PivotTables("PivotTable1").PivotFields(Date1), "Sum of " & Date1 & """, xlSum"
Worksheets("Pivot").PivotTables("PivotTable1").AddDataField Worksheets("Pivot").PivotTables("PivotTable1").PivotFields(Date2), "Sum of " & Date2 & """, xlSum"

会起作用。

如果你想要一个循环,你可以将日期填充到如下所示的数组中,并为每个循环循环数组中的值:

Dim Dates(1)
Dates(0) = "01/01/2017"
Dates(1) = "05/02/2017"

For Each Dat In Dates
Worksheets("Pivot").PivotTables("PivotTable1").AddDataField Worksheets("Pivot").PivotTables("PivotTable1").PivotFields(Dat), "Sum of " & Dat & """, xlSum"
Next