【Excel VBA】簡単に表データから折れ線グラフを作成する方法

こんにちは、湯本です。
 
今回は、Excel VBAでグラフを作成する方法をご紹介します。VBAで実装できれば、データが更新されるたびに対象範囲を選択し直す手間が省け、作業効率が向上します。
 
用意したデータはコチラ。2022年7月の東京の最高気温と最低気温になります。画像では途中までになっていますが、31日まで用意しています。
 
7月の気温
 
では早速やっていきましょう!

Step1 グラフの種類と範囲の指定

まず初めに、作成するグラフの種類を指定する必要があります。今回は折れ線グラフを指定します。グラフに表示する範囲は、表のセルA3からセルC34までとなります。

'グラフの作成
With ActiveSheet.Shapes.AddChart.Chart

  '折れ線グラフを指定
  .ChartType = xlLine
  'グラフ範囲を指定
  .SetSourceData Cells(3, "A").CurrentRegion

End With

.ChartTypeでは、グラフの種類を設定します。設定できる種類の一部を紹介します。

折れ線 xlLine
集合縦棒 xlColumnClustered
集合横棒 xlBarClustered

.CurrentRegionは、セルA3を起点に作成されている表データを参照してくれる、便利なプロパティになります。
 
上記の記述で、以下の折れ線グラフが作成されました。

Step2 グラフの表示位置とサイズの指定

Step1で作成したグラフだと、小さくて見にくいので、見やすいように表示設定をしていきます。まずは、作成したグラフの表示位置とサイズを指定します。

'グラフオブジェクトをオブジェクト変数に格納
Set chartObj = ActiveSheet.ChartObjects(1)   
With chartObj
    
    'グラフ表示位置とサイズの設定
    .Top = Range("G2").Top
    .Left = Range("G2").Left
    .Width = 500
    .Height = 300

End With

上記の記述で、作成したグラフをセルG2に配置し、サイズを横500px高さ300pxに指定しています。

Step3 グラフの詳細指定

次は、グラフを横幅いっぱいに表示し、さらに見やすくしたいと思います。凡例や目盛り、線色の詳細設定を行っていきます。

'グラフを扱うオブジェクトをセット
With .Chart
    
    '凡例の表示
    .HasLegend = True
    '凡例をグラフの下に表示
    .Legend.Position = xlLegendPositionBottom
    '最高気温の線を赤色へ変更
    .FullSeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
    '最低気温の線を青色へ変更
    .FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
    '横軸の表示形式を指定
    .Axes(xlCategory).TickLabels.NumberFormatLocal = "mm/dd"
    '横軸の目盛りを2日間隔に指定
    .Axes(xlCategory).MajorUnit = 2
    '横軸目盛りの表示角度を90度に指定
    .Axes(xlCategory).TickLabels.Orientation = 90
    '縦軸の目盛りの種類をなしに指定
    .Axes(xlValue).MajorTickMark = xlNone

End With

上記の記述で、以下のようにグラフの見栄えが整いました。

Step4 グラフのタイトル表示

次は、作成したグラフにタイトルを表示するための設定を行います。

With chartObj.Chart
    
    'タイトルの表示
    .HasTitle = True
    'タイトルのを設定
    .ChartTitle.Text = "7月の最高気温と最低気温"

End With

上記の記述で、グラフタイトルを「7月の最高気温と最低気温」と表示することができました。

Step5 グラフのタイトル設定

最後に、グラフタイトルのフォントサイズと太さの設定を行います。

With .ChartTitle.Format.TextFrame2.TextRange.Font
    
    'タイトルサイズを指定
    .Size = 15
    'タイトル文字の太さを細字に指定
    .Bold = False
    
End With

上記の記述で、グラフタイトルのフォントサイズを15pxにし、太さを細字設定にしています。
 
これで折れ線グラフの完成です!

今回のコード

階層構造とWith~Endの記述が難しく感じるかもしれませんが、作成手順と構造が理解できればそれほど難しくはありません。今回紹介したコードを以下にまとめましたので、実装するときの参考にしてみてください。

Option Explicit
Sub グラフ作成()
    
    'グラフオブジェクトの変数宣言
    Dim chartObj As Object
    
    'グラフの作成
    With ActiveSheet.Shapes.AddChart.Chart
        
        '折れ線グラフを指定
        .ChartType = xlLine
        'グラフ範囲を制定
        .SetSourceData Cells(3, "A").CurrentRegion
    
    End With
    
    'グラフオブジェクトをオブジェクト変数に格納
    Set chartObj = ActiveSheet.ChartObjects(1)
    With chartObj
        
        'グラフ表示位置とサイズの設定
        .Top = Range("G2").Top
        .Left = Range("G2").Left
        .Width = 500
        .Height = 300
        
        With .Chart
            
            '凡例の表示
            .HasLegend = True
            '凡例をグラフの下に表示
            .Legend.Position = xlLegendPositionBottom
            '最高気温の線を赤色へ変更
            .FullSeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
            '最低気温の線を青色へ変更
            .FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
            '横軸の表示形式を指定
            .Axes(xlCategory).TickLabels.NumberFormatLocal = "mm/dd"
            '横軸の目盛りを2日間隔に指定
            .Axes(xlCategory).MajorUnit = 2
            '横軸目盛りの表示角度を90度に指定
            .Axes(xlCategory).TickLabels.Orientation = 90
            '縦軸の目盛りの種類をなしに指定
            .Axes(xlValue).MajorTickMark = xlNone
                
            With chartObj.Chart
                
                'タイトルの表示
                .HasTitle = True
                'タイトルの指定
                .ChartTitle.Text = "7月の最高気温と最低気温"
                
                With .ChartTitle.Format.TextFrame2.TextRange.Font
                    
                    'タイトルサイズ
                    .Size = 15
                    'タイトル細字
                    .Bold = False
                    
                End With
        
            End With
        
        End With
        
    End With
    
End Sub

 
 
 
 
《関連記事》

Excelの読込・書込の基本操作紹介
技術
2022.1.12(Wed)

PythonでExcelを自動化すると便利! Excelの読込・書込の基本操作紹介

#Python#プログラム
 

誤字脱字を防ぐ!Excelの文章校閲機能 編
技術
2022.3.9(Wed)

誤字脱字を防ぐ!Excelの文章校閲機能 編

#まとめ#ビジネス
 

VBAの基本的な書き方入門
技術
2022.5.16(Mon)

プログラム学習の第一歩! VBAの基本的な書き方入門

#プログラム
 

記事をシェア
MOST VIEWED ARTICLES