Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA创建动态数据透视表_Vba_Excel - Fatal编程技术网

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

使用VBA创建动态数据透视表,vba,excel,Vba,Excel,我正在编写一个代码来创建一个动态数据透视表,但是我需要数据透视表来读取一个动态范围内的数据,这些数据的列名(日期)会随着日期范围的变化而变化 因此,对于以下代码行: 工作表(“数据透视”)。数据透视表(“数据透视表1”)。添加数据字段工作表(“数据透视”)。数据透视表(“数据透视表1”)。数据透视字段(“2016年1月15日”),“2016年1月15日之和”,xlSum 我需要使用变量而不是日期15/01/2017,我需要使用循环将所有日期范围填充到数据透视表的数据字段中。如果您有特定的日期数,

我正在编写一个代码来创建一个动态数据透视表,但是我需要数据透视表来读取一个动态范围内的数据,这些数据的列名(日期)会随着日期范围的变化而变化

因此,对于以下代码行:

工作表(“数据透视”)。数据透视表(“数据透视表1”)。添加数据字段工作表(“数据透视”)。数据透视表(“数据透视表1”)。数据透视字段(“2016年1月15日”),“2016年1月15日之和”,xlSum


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

如果您有特定的日期数,您可以用变量名称替换硬编码的日期。因此,在您的情况下,有两个日期:

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

请描述您面临的具体问题,并张贴屏幕截图/更深入的代码粘贴。特别是使用Excel/VBA,如果你想得到一个好的答案,重要的是对你的问题有一个清晰的了解。问题是日期是动态的,用户可以输入从(2016年1月1日-2017年1月1日)开始的日期,下次他可能会将日期更改为其他范围,如(2016年2月20日-2016年6月117日)因此,数据透视字段不是特定的日期或名称,因此,我希望使用单元格范围作为示例范围(“A1”)。我知道我不能使用数据透视字段(范围(“A1”)),但是否有任何解决方法您可以将Excel单元格范围指定给变量,并在公式中使用变量。所以Date1=Range(“A1”),Date2=Range(“A2”)将完成第一个解决方案的工作。对于第二个数组解决方案,它应该是日期(0)=范围(“A1”)、日期(1)=范围(“A2”)等等。