Excel VBAでグラフを作成する:グラフ、タイトル、数値軸
VBAでのグラフの作り方を紹介します。今回は、実際にデータを使ってケーススタディ式に説明していきます。
グラフを作る
グラフを作る構文は下記のとおりです。
ActiveSheet.Shapes.AddChart.Chart
これを用いて、今回は下のデータのグラフを作成していきます。

生徒ごとの棒グラフを作っていきます。グラフの種類は下のコードで指定します。
.ChartType = xlColumnClustered ’棒グラフ
円グラフは「xlPie」、折れ線グラフは「xlLine」など、他にも指定できる種類はたくさん存在します。
使いたいデータの範囲は以下のように指定します。
.SetSourceData Source:=Objects
これらを用いて、マクロを作成していきます。
Sub Graph_sample()
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlColumnClustered
.SetSourceData Source:=Sheets("Sheet1").Range("A2:G7")
End With
End Sub
[実行結果]

科目ごとに作りたいので、Select Case文を用いて行と列を逆にします。
Sub Graph_sample()
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlColumnClustered
.SetSourceData Source:=Sheets("Sheet1").Range("A2:G7")
Select Case .PlotBy
Case xlRows
.PlotBy = xlColumns
Case xlColumns
.PlotBy = xlRows ’行と列をそれぞれ逆に設定
End Select
End With
End Sub
タイトル付け・数値軸
より見やすくわかりやすいグラフを作るために、タイトル付けと数値軸の変更をしていきます。
タイトルは以下のように指定できます。今回の例では、タイトルはA1セルの文字を代入することにします。
.HasTitle = True .ChartTitle.Text = ””
数値軸は、以下の式で変更可能です。MaximumScaleが最大値、MinimumScaleが最小値を設定します。また、今回は、(テストが100点満点なので)最大値が100になるように変更します。
.Axes(xlValue).MaximumScale = 値 .Axes(xlValue).MinimunScale = 値
.Axes(xlValue).MinimunScaleIsAuto = True
また、Maximum(Minimum)ScaleIsAutoプロパティを用いると、最大値(最小値)が自動で取得されます。
ここまでを踏まえたうえで以下のマクロをご覧ください。
Sub Graph_sample()
Dim Title As String
Title = Range("A1").Value
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlColumnClustered
.SetSourceData Source:=Sheets("Sheet1").Range("A2:G7")
.HasTitle = True 'タイトル付け
.ChartTitle.Text = Title
.Axes(xlValue).MaximumScale = 100 '数値軸の変更
Select Case .PlotBy
Case xlRows
.PlotBy = xlColumns
Case xlColumns
.PlotBy = xlRows
End Select
End With
End Sub
あらかじめ変数TitleにValueでA1セルの文字を入れて、それをHasTitleでタイトル付けしています。また、MaximumScaleを100に設定してあるのがわかると思います。
[実行結果]
