VBAでのグラフの作り方を紹介します。今回は、実際にデータを使ってケーススタディ式に説明していきます。
グラフを作る
グラフを作る構文は下記のとおりです。
1 |
ActiveSheet.Shapes.AddChart.Chart |
これを用いて、今回は下のデータのグラフを作成していきます。
生徒ごとの棒グラフを作っていきます。グラフの種類は下のコードで指定します。
1 |
.ChartType = xlColumnClustered ’棒グラフ |
円グラフは「xlPie」、折れ線グラフは「xlLine」など、他にも指定できる種類はたくさん存在します。
使いたいデータの範囲は以下のように指定します。
1 |
.SetSourceData Source:=Objects |
これらを用いて、マクロを作成していきます。
1 2 3 4 5 6 7 8 |
Sub Graph_sample() With ActiveSheet.Shapes.AddChart.Chart .ChartType = xlColumnClustered .SetSourceData Source:=Sheets("Sheet1").Range("A2:G7") End With End Sub |
[実行結果]
科目ごとに作りたいので、Select Case文を用いて行と列を逆にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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セルの文字を代入することにします。
1 2 |
.HasTitle = True .ChartTitle.Text = ”” |
数値軸は、以下の式で変更可能です。MaximumScaleが最大値、MinimumScaleが最小値を設定します。また、今回は、(テストが100点満点なので)最大値が100になるように変更します。
1 2 |
.Axes(xlValue).MaximumScale = 値 .Axes(xlValue).MinimunScale = 値 |
1 |
.Axes(xlValue).MinimunScaleIsAuto = True |
また、Maximum(Minimum)ScaleIsAutoプロパティを用いると、最大値(最小値)が自動で取得されます。
ここまでを踏まえたうえで以下のマクロをご覧ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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に設定してあるのがわかると思います。
[実行結果]