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

実行結果


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

スポンサーリンク

関連記事・広告