PR

【VBA】グラフ作成/グラフシートの追加を行う

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、Ryoです。
Excelを扱う中でグラフを作成することはかなり多いと思いますが、VBAでもAddメソッドやChartTypeプロパティなどでグラフ作成やグラフシートの追加を行うことができますので、今回はその内容について書いていきます。

スポンサーリンク

1.サンプル概要

Sheet1にサンプルとして作成した表に対し、グラフの作成とグラフシートの追加を行っていきます。

グラフの種類を「集合縦棒」として実行した結果が以下になります。作成するグラフの位置は指定できるので、表の中央付近で下側に表示させています。

次は同じ表を指定し、「グラフシート」を作成します。

以上がサンプル概要になります。

2.サンプルコード

◆グラフの作成

Sub Sample1()

 'グラフを作成する
  With Worksheets("Sheet1").ChartObjects. _
      Add(50, 110, 250, 180).Chart
     'セルA2を起点とする表のデータ範囲を取得
     .SetSourceData Range("A2").CurrentRegion
     'グラフ種類を「集合縦棒」として設定
     .ChartType = xlColumnClustered
  End With

End Sub

≪Addメソッドの構文≫

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

≪SetSourceDataメソッドの構文≫

オブジェクト.SetSourceData(Source, PlotBy)

≪ChartTypeプロパティの構文≫

オブジェクト.ChartType = expression

AddメソッドはオブジェクトにChartObjectsオブジェクトを指定してグラフを作成することができるもので引数のLeftはグラフ左端の位置、引数Topはグラフ上端の位置をワークシート左上端からの距離をポイント単位で指定し、引数Widthと引数Heightはグラフの幅と高さを指定するものです。

SetSourceDataメソッドは引数Sourceにグラフの元となるデータを指定します。(PlotByはプロット方向を指定するものです)

ChartTypeプロパティについてはグラフの種類をXlChartTypeクラスの定数で指定するもので、以下になります。

名前 内容
xl3DArea -4098 3-D 面
xl3DAreaStacked 78 3-D 積み上げ面
xl3DAreaStacked100 79 100% 積み上げ面
xl3DBarClustered 60 3-D 集合横棒
xl3DBarStacked 61 3-D 積み上げ横棒
xl3DBarStacked100 62 3-D 100% 積み上げ横棒
xl3DColumn -4100 3-D 縦棒
xl3DColumnClustered 54 3-D 集合縦棒
xl3DColumnStacked 55 3-D 積み上げ縦棒
xl3DColumnStacked100 56 3-D 100% 積み上げ縦棒
xl3DLine -4101 3-D 折れ線
xl3DPie -4102 3-D 円
xl3DPieExploded 70 分割 3-D 円
xlArea 1 分野
xlAreaStacked 76 積み上げ面
xlAreaStacked100 77 100% 積み上げ面
xlBarClustered 57 集合横棒
xlBarOfPie 71 補助縦棒グラフ付き円
xlBarStacked 58 積み上げ横棒
xlBarStacked100 59 100% 積み上げ横棒
xlBubble 15 バブル
xlBubble3DEffect 87 3-D 効果付きバブル
xlColumnClustered 51 集合縦棒
xlColumnStacked 52 積み上げ縦棒
xlColumnStacked100 53 100% 積み上げ縦棒
xlConeBarClustered 102 集合円錐型横棒
xlConeBarStacked 103 積み上げ円錐型横棒
xlConeBarStacked100 104 100% 積み上げ円錐型横棒
xlConeCol 105 3-D 円錐型縦棒
xlConeColClustered 99 集合円錐型縦棒
xlConeColStacked 100 積み上げ円錐型縦棒
xlConeColStacked100 101 100% 積み上げ円錐型縦棒
xlCylinderBarClustered 95 集合円柱型横棒
xlCylinderBarStacked 96 積み上げ円柱型横棒
xlCylinderBarStacked100 97 100% 積み上げ円柱型横棒
xlCylinderCol 98 3-D 円柱型縦棒
xlCylinderColClustered 92 集合円錐型縦棒
xlCylinderColStacked 93 積み上げ円錐型縦棒
xlCylinderColStacked100 94 100% 積み上げ円柱型縦棒
xlDoughnut -4120 ドーナツ
xlDoughnutExploded 80 分割ドーナツ
xlLine 4 折れ線
xlLineMarkers 65 マーカー付き折れ線
xlLineMarkersStacked 66 マーカー付き積み上げ折れ線
xlLineMarkersStacked100 67 マーカー付き 100% 積み上げ折れ線
xlLineStacked 63 積み上げ折れ線
xlLineStacked100 64 100% 積み上げ折れ線
xlPie 5
xlPieExploded 69 分割円
xlPieOfPie 68 補助円グラフ付き円
xlPyramidBarClustered 109 集合ピラミッド型横棒
xlPyramidBarStacked 110 積み上げピラミッド型横棒
xlPyramidBarStacked100 111 100% 積み上げピラミッド型横棒
xlPyramidCol 112 3-D ピラミッド型縦棒
xlPyramidColClustered 106 集合ピラミッド型縦棒
xlPyramidColStacked 107 積み上げピラミッド型縦棒
xlPyramidColStacked100 108 100% 積み上げピラミッド型横棒
xlRadar -4151 レーダー
xlRadarFilled 82 塗りつぶしレーダー
xlRadarMarkers 81 データ マーカー付きレーダー
xlRegionMap 140 マップ グラフ。
xlStockHLC 88 高値 – 安値 – 終値
xlStockOHLC 89 始値 – 高値 – 安値 – 終値
xlStockVHLC 90 出来高 – 高値 – 安値 – 終値
xlStockVOHLC 91 出来高 – 始値 – 高値 – 安値 – 終値
xlSurface 83 3-D 表面
xlSurfaceTopView 85 表面 (トップ ビュー)
xlSurfaceTopViewWireframe 86 表面 (トップ ビュー – ワイヤーフレーム)
xlSurfaceWireframe 84 3-D 表面 (ワイヤーフレーム)
xlXYScatter -4169 散布図
xlXYScatterLines 74 折れ線付き散布図
xlXYScatterLinesNoMarkers 75 折れ線付き散布図 (データ マーカーなし)
xlXYScatterSmooth 72 平滑線付き散布図
xlXYScatterSmoothNoMarkers 73 平滑線付き散布図 (データ マーカーなし)

サンプルでは集合縦棒のxlColumnClusteredを指定していますが、上の表内の値を指定して.ChartType = 51の記述にしても同様の処理ができます。

◆グラフシートの追加

Sub Sample2()

  'グラフシートを追加する
  With Charts.Add(After:=Worksheets("Sheet1"))
     'ワークシート「Sheet1」のセルA2を起点とする
     '表のデータ範囲を取得
     .SetSourceData Worksheets("Sheet1"). _
      Range("A2").CurrentRegion
     'グラフ種類を「集合縦棒」として設定
     .ChartType = xlColumnClustered
  End With
  
End Sub

≪Chartsオブジェクトの構文≫

オブジェクト.Charts

≪Addメソッドの構文≫

オブジェクト.Add(Before, After, Count)

Chartsオブジェクト=グラフシートを表しますので、Addメソッドでグラフシートの作成を行っています。Addメソッドの引数Before/Afterは指定したシートの左側(=Before)、右側(=After)にグラフシートを作成するもので、引数Countは追加するChartオブジェクトを指定します。

サンプルでは「Sheet1」のデータを元にしてグラフシートを作成しています。処理の流れとしてはAddメソッドでからのグラフシート作成→データ指定→グラフ指定となります。

◆参考:グラフシートのカウント処理

ワークシートの数をカウントする際に「Worksheets.Count」を記述して使用しますが、この場合「グラフシートはカウントされません」のでグラフシートを含めてシート数を取得したい場合は「Sheets.Count」とすればOKです。

3.まとめ

VBAでデータ集計などを行う際にグラフとして出力したいケースは多々ありますので、グラフ作成やグラフシート追加の手段を知っておくと有用なケースが多いと思います。



今回サンプルとして紹介したようにグラフ出力するだけれあれば特に難しいこともありませんので、機会があればぜひご活用くださいませ。

以上、グラフ作成/グラフシートの追加を行う方法についてでした!今回の記事が何かの参考になれば幸いです。

Ryo

タイトルとURLをコピーしました