VBAでグラフを作成する方法!フレキシブルな折れ線グラフ編

エクセルでグラフを作成することって多いですよね。

グラフの種類として多いのは、棒グラフや折れ線グラフなんじゃないでしょうか。

よく使うグラフであれば、グラフ作成のためのマクロを組んでしまった方が楽だったりします。

この記事では、グラフの種類を折れ線グラフに絞って、「VBAでグラフを作成する方法」について解説します。

棒グラフについては別記事の『VBAでグラフを作成する方法!フレキシブルな棒グラフ編』を御覧ください。

1.ワークシート上の準備

こんにちは。エクセルマン・ブリーダーのしもむぎ(@re_znd13)です。

今回は「よく使う折れ線グラフを手間をかけずに作りたい!」、「データを入力して実行するだけのフレキシブルなマクロを組みたい!」というコンセプトで進めていきます。

まずはデータを入力する欄をワークシート上に用意します。

表

図の赤線で囲った部分はタイトルを入力するセルです。

図の青線で囲った部分には横軸のデータを入力します。A列が名称で、B列から右にデータを入力します。今回はデータ数が何個でもよいような仕様を考えましょう。

図のオレンジ線で囲った部分にはグラフにしたいデータを入力します。A列に凡例、B列から右にデータを入力します。こちらもデータ数が何個でもよいような仕様を考えていきます。またデータの系列数も何個でもよいような仕様とします。

ちなみに、別記事の『 VBAでグラフを作成する方法!フレキシブルな棒グラフ 』と同じ表を用意しました。つまり、別記事と本記事をマスターすれば、同じワークシートから棒グラフ・折れ線グラフのどちらでも作れちゃいますよ。がんばりましょう!

2.グラフを作成するVBAコード

それではVBAコードを紹介します。

コメントとしてコード中に記述していますが、すでにグラフがある場合(2回目以降)はそのグラフを削除することとしました。

[B]部分でグラフを作成しますが、アクティブセルの位置によっては空でなくデータ系列が入ってしまいますので、これは削除することとしています。

[C]部分では表に入力された系列数とデータ数を検出します。

[E]部分で1系列ずつ追加していきますので、[D]部分のように系列数だけループさせます。

[F]部分がグラフの設定になります。グラフの種類と横軸、データ、凡例を設定しています。

ちなみに、このコードは『VBAでグラフを作成する方法!フレキシブルな棒グラフ編』とほぼ一緒です。異なるのはグラフの種類の設定のみ。

Sub 折れ線グラフ()
Dim i, p, q As Long
Dim chrt As Shape

'[A]すでにグラフがある場合は削除します
For Each chrt In ActiveSheet.Shapes
    chrt.Delete
Next chrt

'[B]空のグラフを作成します
'  データ系列が設定されてしまった場合は削除します
ActiveSheet.Shapes.AddChart.Chart.ChartType = xlColumnClustered
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.ClearContents

'[C]データ系列数と各系列のデータ数を検出します
p = Range("B2").End(xlDown).Row - 2
q = Range("B2").End(xlToRight).Column

'[D]データ系列数だけ繰り返します
For i = 1 To p

'[E]グラフにデータ系列を作成します
    ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries

'[F]データ系列の設定を行います
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(i)
        .ChartType = xlLine  '折れ線グラフに設定
        .XValues = Range(Cells(2, 2), Cells(2, q))  '横軸の値を設定
        .Values = Range(Cells(2 + i, 2), Cells(2 + i, q))   'データを設定
        .Name = Cells(2 + i, 1) '系列名を設定
    End With

Next i

End Sub

ということは、グラフの種類をワークシート上で選択するような仕様にすれば、共通のVBAコードで実現できちゃいますね。そういった内容もまた別の機会に取り上げてみましょう。

3.実行結果の例

実行結果を示します。

2系列の場合も3系列の場合も、上記コードで折れ線グラフ化できました。データ数も変えていますが、しっかりグラフになっていますね。

2系列
3系列

4.まとめ

この記事では、「VBAでグラフを作成する方法」について解説しました。

よく使う折れ線グラフを取り上げてみましたが、いかがでしたか?

別記事の『VBAでグラフを作成する方法!フレキシブルな棒グラフ編』と合わせて読んでいただけるととてもうれしく思います。