【Excel VBA】動的にグラフを作成する方法

Excelでデータが増減するたびに手動でグラフを更新するのは手間がかかってしまいます。この記事では、Excel VBAを使って動的にグラフを作成する手順を解説します。

 

sponsor link

動的にグラフを作成するVBAコード

以下は、シート内のデータに基づいて動的なグラフを作成する基本的なコードです。

VBAコード例

Sub CreateDynamicChart()
    Dim ws As Worksheet
    Dim chartObj As ChartObject
    Dim dataRange As Range
    Dim chartRange As String

    ' シートを指定
    Set ws = ThisWorkbook.Sheets("Sheet1")

    ' データ範囲を動的に取得
    With ws
        Dim lastRow As Long
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set dataRange = .Range("A1:B" & lastRow)
    End With

    ' データ範囲を指定
    chartRange = dataRange.Address

    ' グラフオブジェクトを作成
    Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=400, Top:=50, Height:=300)

    ' グラフのソースデータを設定
    With chartObj.Chart
        .SetSourceData Source:=ws.Range(chartRange)
        .ChartType = xlLine ' グラフタイプを線グラフに設定
    End With

    MsgBox "グラフを作成しました!"
End Sub

コードの解説

  1. データ範囲の取得
    • 列Aと列Bを基準に、最終行までの範囲を取得しています。
  2. グラフオブジェクトの作成
    • ChartObjects.Add を使い、指定した位置とサイズでグラフを作成します。
  3. グラフの種類の設定
    • .ChartType = xlLine で線グラフを設定しています。他のグラフタイプにも変更可能です。

実行結果のイメージ

以下は、このコードを実行した後の動的グラフの例です。

上記のように、データ範囲に応じて自動的にグラフが生成されます。

 


動的グラフの応用例

複数のデータ列を使用する場合

以下のコードでは、データが複数列にまたがる場合の例を示します。

Sub CreateMultiSeriesChart()
    Dim ws As Worksheet
    Dim chartObj As ChartObject
    Dim dataRange As Range
    Dim lastRow As Long

    ' シートを指定
    Set ws = ThisWorkbook.Sheets("Sheet1")

    ' 最終行を取得してデータ範囲を設定
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    Set dataRange = ws.Range("A1:D" & lastRow) ' 列AからDまで使用

    ' グラフを作成
    Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=500, Top:=100, Height:=300)
    With chartObj.Chart
        .SetSourceData Source:=dataRange
        .ChartType = xlColumnClustered ' クラスタ化された縦棒グラフ
    End With

    MsgBox "複数系列のグラフを作成しました!"
End Sub

実行後のイメージ


注意点

  1. データ形式の確認
    • グラフの元データに空白や非数値データが含まれると、エラーが発生する可能性があります。
  2. グラフの位置とサイズ
    • ChartObjects.Add のパラメータで位置とサイズを指定できます。
  3. グラフタイプの選択
    • xlLinexlColumnClustered など、用途に応じて適切なグラフタイプを選択してください。

まとめ

Excel VBAを使えば、データの増減に応じて動的にグラフを作成できます。この仕組みを活用することで、日々のデータ分析やレポート作成を効率化することが可能です。ぜひこの記事を参考に、グラフの自動生成にチャレンジしてみてください!

    コメント

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