Excel VBA ピボットグラフを作成する

スポンサーリンク
スポンサーリンク

ピボットグラフの作成方法

ピボットグラフは、ピボットテーブルを元にして
埋め込みグラフとして作成します。
通常の埋め込みグラフを作成する方法と同じで
ChartObjects【チャートオブジェクツ】コレクションの
Add【アド】メソッド使用します。
データ範囲にピボットテーブルのセル範囲を
PivotTable【ピボットテーブル】オブジェクトの
TableRange1【テーブルレンジワン】プロパティを使用して取得します。

ChartObjects.Add【チャートオブジェックスアド】メソッド

ワークシートに埋め込みグラフを作成するには
ChartObjects【チャートオブジェクツ】コレクションの
Add【アド】メソッドを使用します。
新しい埋め込みグラフを作成して
ChartObject【チャートオブジェクト】オブジェクトを返します。
ChartObject【チャートオブジェクト】オブジェクトは
グラフエリアを表し、グラフの大きさや外観を操作します。
グラフ自体を操作するには
ChartObjectオブジェクトのChart【チャート】プロパティを使用して
Chartオブジェクトを取得して操作します。

ChartObjects.Add【チャートオブジェクツアド】メソッドの書式

オブジェクト.Add( Left, Top, Width, Height )


  • オブジェクト(必須)
    ChartObjects【チャートオブジェクツ】コレクションを指定します。
  • Left【レフト】(必須)
    埋め込みグラフの左端位置をポイント単位で指定します。
  • Top【トップ】(必須)
    埋め込みグラフの上端位置をポイント単位で指定します。
  • Width【ワイズ】(必須)
    埋め込みグラフの幅をポイント単位で指定します。
  • Height【ハイト】(必須)
    埋め込みグラフの高さをポイント単位で指定します。

埋め込みグラフの位置と幅、高さはセル座標を取得する
Rangeオブジェクトの
Top・ Left・ Width・Heightプロパティを使用して取得します。


SetSourceData【セットソースデータ】メソッド

グラフのデータ範囲を指定するには
Chart【チャート】オブジェクトの
SetSourceData【セットソースデータ】メソッドを使用します。

SetSourceData【セットソースデータ】メソッドの書式

[]内は省略可能です。
オブジェクト.SetSourceData( Source[, PlotBy ])


設定値(引数)の説明

  • オブジェクト(必須)
    Chart【チャート】オブジェクトを指定します。
  • Source【ソース】(必須)
    グラフのデータの元となるセル範囲を指定します。
  • PlotBy【プロットバイ】(省略可)
    グラフに表示するデータの系列をxlRowCol列挙型の定数で指定します。
    省略した場合は、データ範囲の項目の行数が項目の列数より多い場合は
    列方向となり、同数または、少ない場合は、行方向となります。

    xlRowCol列挙型の定数
    定数内容
    xlColumns列方向
    xlRows行方向

TableRange1【テーブルレンジワン】プロパティ

ピボットテーブルのセル範囲を取得するには
PivotTable【ピボットテーブル】オブジェクトの
TableRange1【テーブルレンジワン】プロパティを使用します。
TableRange1【テーブルレンジワン】プロパティはページフィールドを除く
ピボットテーブルの範囲をRangeオブジェクトで返します。
ページフィールドを含むピボットテーブルの範囲を取得する場合は
TableRange2【テーブルレンジツゥ】プロパティを使用します。
値の取得のみ可能です。

TableRange1【テーブルレンジワン】プロパティの書式

オブジェクト.TableRange1


設定値の説明

  • オブジェクト(必須)
    範囲を取得するピボットテーブルを表す
    PivotTable【ピボットテーブル】オブジェクトを指定します。

7月度の店舗別事業売上表を元にピボットテーブルを作成してグラフを作成する例

実行前

コード例

ピボットテーブルの作成方法は
ピボットテーブルを作成するをご覧ください。

Sub テーブルグラフ作成()
Dim キャッシュ As PivotCache
Dim テーブル As PivotTable
Set キャッシュ = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=Range("A1").CurrentRegion)
Set テーブル = キャッシュ.CreatePivotTable _
(tabledestination:=Range("F1"), TableName:="7月度事業別売上")
With テーブル
.PivotFields("事業").Orientation = xlRowField
.PivotFields("店名").Orientation = xlColumnField
With .PivotFields("売上")
.Orientation = xlDataField
.Function = xlSum
.NumberFormat = "#,##0"
End With
End With
Dim グラフ範囲 As Range
Set グラフ範囲 = Range("F8:K18")
With ActiveSheet.ChartObjects.Add(グラフ範囲.Left, グラフ範囲.Top, グラフ範囲.Width, グラフ範囲.Height)
.Chart.SetSourceData Source:=ActiveSheet.PivotTables("7月度事業別売上").TableRange1
End With
End Sub
実行結果


Excel2007以降は
Shapes【シィプス】コレクション
AddChart【アドチャート】メソッドでもグラフの作成ができます。
詳細はグラフの作成をご覧ください。

AddChart【アドチャート】メソッドでピボットグラフを作成するコード例

Sub テーブルグラフ作成2()
Dim キャッシュ As PivotCache
Dim テーブル As PivotTable
Set キャッシュ = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=Range("A1").CurrentRegion)
Set テーブル = キャッシュ.CreatePivotTable _
(tabledestination:=Range("F1"), TableName:="7月度事業別売上")
With テーブル
.PivotFields("事業").Orientation = xlRowField
.PivotFields("店名").Orientation = xlColumnField
With .PivotFields("売上")
.Orientation = xlDataField
.Function = xlSum
.NumberFormat = "#,##0"
End With
End With
Dim グラフ範囲 As Range
Set グラフ範囲 = Range("F8:K18")
With ActiveSheet.Shapes.AddChart(xl3DColumn, グラフ範囲.Left, グラフ範囲.Top, グラフ範囲.Width, グラフ範囲.Height)
.Chart.SetSourceData Source:=ActiveSheet.PivotTables("7月度事業別売上").TableRange1
End With
End Sub

実行結果


以上で
ピボットグラフを作成する方法についての解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク