【VBA】複数のグラフを一括作成する方法!サンプルデータを使って実演!

たくさんのデータを分析する際、一つのグラフに複数データを一括表示させるより、ひとつひとつのデータを別々のグラフに出力した方が、分析効率が上がることもあると思います。

 

この記事では、そんな状況で役に立つ、複数のグラフをVBAを使って一括作成する方法をご紹介しています。

 

さっそくやっていきましょう!

 

スポンサーリンク

紹介するスキルの概要説明

まずはじめにこの記事で紹介する内容を簡単にご説明しておきます。

 

今回は、以下のようにAからD列までにいくつかのデータが入っている状態で、

f:id:yshgs_elec:20210217214246j:plain

 

各データを参照したグラフを別々に、かつ一括作成する方法をご紹介します。

(今回は、X軸はすべてのグラフで共通とし、A列を参照するようにしています。X軸をそれぞれ変更した場合でも、この記事の内容を少し応用するだけで対応可能です。)

f:id:yshgs_elec:20210217214753j:plain

あなたのやりたいことと一致していれば、ぜひ続きをご覧ください。

 

スポンサーリンク

複数グラフを一括作成するVBAコード

さっそくですが、先ほどご紹介した内容を実現するVBAコードは以下の通りです。

 

Sub Make_graph()
    '変数の型を宣言
    Dim X_AXIS  As String
    Dim Y_AXIS As String
    Dim GRF_name As String
    'データが3つあるので3回繰り返す
    For i = 0 To 2
        '作成後のグラフ名
        GRF_name = Cells(1, 2 + i)
        'データ範囲を取得する
        X_AXIS = "A2:A22"
        Y_AXIS = Chr(66 + i) & "2:" & Chr(66 + i) & "22"
        'グラフ(散布図)を挿入する
        ActiveSheet.Shapes.AddChart2(-1, -4169).Select
        With ActiveChart
            '1つ目のデータ作成
            .SeriesCollection.NewSeries
            .FullSeriesCollection(1).XValues = ActiveSheet.Name & "!" & X_AXIS
            .FullSeriesCollection(1).Values = ActiveSheet.Name & "!" & Y_AXIS
            'グラフの名前、タイトルを変更する
            .Parent.Name = GRF_name
            .ChartTitle.Text = GRF_name
        End With
        'グラフの位置調整
        ActiveSheet.Shapes(GRF_name).Left = Cells(1, i * 7 + 1).Left
    Next
End Sub

 

◆コードのポイント解説

今回のポイントは、作成するグラフが参照するセル範囲をうまく指定してあげるところです。

X軸となるA列は固定することにしたので、”A2:A22″というように普通に指定すれ良いのですが、Y軸となるデータは各グラフごとにことなる場所を指定する必要があります。

今回はB列、C列、D列というように順番に領域を指定するためにChr関数というものを用いています。

 

Chr関数はある数値を入力してあげれば、その数値に対応する文字を返してくれる関数です。

たとえば

Chr(66)⇒B

Chr(67)⇒C

Chr(68)⇒D

という感じです。

 

Chr関数に入れる数値と出力される文字について詳しく知りたい方は以下のマイクロソフトの公式ページをご確認ください。

文字セット (0 から 127) | Microsoft Docs

 

 また、今回は一気に3つのグラフを作成したため、コードが少し複雑化しており、初心者の方にはわかりにくかったかもしれません。

もうすこし基礎的な状況で解説してほしいという方は以下の記事も参考にしてみてください。

◆あわせて読みたい

【エクセルVBA】グラフを自動作成⇒グラフ名を変更する方法!

 

今回はデータが3つしかない状況でコードを書いていますが、もっとたくさんデータがあった場合は、For Nextの繰り返し回数をデータ数に応じて変更していただければ、何個でも一気にグラフを作成できるようになっています。

ぜひご活用ください。

 

スポンサーリンク

おわりに

というわけで今回は複数のグラフを一括作成するVBAコードをご紹介しました。

 

データがたくさんある状況

 

このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

 

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

 ↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

 

それではまた!

コメント

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