2017-06-01 39 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)ピボットフィールドは特定の日付や名前ではないので、Pivo​​tfields(Date1)のDate1の代わりにRange( "A1")などのセル範囲を使用したいと思います。 "))しかし、回避策があります – MAK

+0

Excelセル範囲を変数に割り当て、数式で変数を使用することができます。したがって、Date1 = Range( "A1")、Date2 = Range( "A2")は、最初の解決策の作業を行います。 2番目の配列解は、Dates(0)= Range( "A1")、Dates(1)= Range( "A2")などでなければなりません。 –

関連する問題