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に設定してあるのがわかると思います。

[実行結果]