2017-06-01 147 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」)等等。 –