関数・メソッド

同じデータソースから別のピボットテーブルを作成する【CreatePivotTableメソッド】【ExcelVBA】

PivotCacheを利用する

ピボットテーブルを作成した際、内部的に構築がキャッシュ(保存)されます。
このキャッシュされたデータが PivotCacheオブジェクト になります。

既存のピボットテーブルがあれば、PivotCacheオブジェクト を呼び出し再度使用することができます。
同じデータソースからフィールドの配置を変えたピボットテーブルを作成するときなどに使えます。

 

CreatePivotTableメソッド

キャッシュされたデータを引き出すためには CreatePivotTableメソッド を使います。
※フィールドの設定は別途必要になります。

構文
Object.CreatePivotTable (TableDestination, TableName, ReadData, DefaultVersion)

Object PivotCacheオブジェクトを表す変数です。
TableDestination 作成するピボットテーブルが配置するシート名とセルを指定します。必須です。
TableName 作成するピボットテーブルの名前を指定します。
ReadData True を指定すると、外部データベースのすべてのレコードを含むキャッシュが作成されます。
DefaultVersion ピボットテーブルの既定のバージョンを指定します。

 

サンプルコード

A1セルに下記の表をコピペしてください。

商品名 日付 売上
りんご 1月1日 2000
みかん 1月1日 1500
ぶどう 1月2日 3000
りんご 1月2日 3000
Public Sub PivotTable()
'キャッシュの基となるピボットテーブルを作成
 Worksheets("Sheet1").PivotTableWizard SourceType:=xlDatabase, _
                            SourceData:=Range("A1").CurrentRegion, _
                            TableDestination:=Range("E1"), _
                            TableName:="売上表"
End Sub
Public Sub PivotCache()
  Dim pivot As PivotCache
  Set pivot = ThisWorkbook.PivotCaches(1)  '■キャッシュデータを取得

'ピボットテーブルを作成する
  '作成位置を指定(Sheet1,E10セル)
  'テーブル名を「日付別販売個数」にする
  pivot.CreatePivotTable _
        TableDestination:=Worksheets("Sheet1").Range("E10"), _
        TableName:="日付別売上"

'フィールドの設定
  With Worksheets("Sheet1").PivotTables("日付別売上")
       .PivotFields("日付").Orientation = xlRowField   '「日付」を行に設定
       .PivotFields("商品名").Orientation = xlRowField  '「商品名」を行に追加

        '販売個数に対する処理
       With .PivotFields("売上")
       .Orientation = xlDataField        'データ
       .Function = xlSum                 '合計値を求める
       End With
  End With

End Sub


 

注意点

  • PivotCacheオブジェクトは PivotCachesコレクション のメンバーです。

 

関連記事

 

コメント