2017-06-01 143 views
0

我正在创建一个动态数据透视表的代码,但我很挣扎,因为我需要数据透视表从不同的列名(日期)数据的动态范围读取根据日期范围更改。使用VBA创建动态数据透视表

因此,对于下面的代码行:

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

我需要使用,而不是日期15/01/2017变量,我需要使用一个循环来填满所有的时间范围为在数据字段数据透视表。

+0

请描述你所面临的具体问题和后截图/多深入的代码粘贴。特别是对于Excel/VBA,如果你想得到一个好的答案,对你的问题有一个强烈的描述是很重要的。 –

回答

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 
+0

问题是日期是动态的,用户可以从(1/1/2016 - 1/1/2017)开始输入日期,下一次他可以将日期更改为其他一些范围,如(20/2/2016 - 117/6/2016)所以pivotfields不是特定的日期或名称,所以而不是日期1在Pivotfields(Date1)我想使用单元格范围为例如Range(“A1”).i知道我不能使用pivotfields(Range(“A1 “))但是是否有任何解决方法 – MAK

+0

您可以将Excel单元格区域分配给变量并在公式中使用变量。所以Date1 = Range(“A1”),Date2 = Range(“A2”)将为第一个解决方案做好工作。对于第二个阵列解决方案,它应该是日期(0)=范围(“A1”),日期(1)=范围(“A2”)等等。 –