Excel

【Excel】VBAマクロでグラフ範囲(x軸やy軸)を指定や変更する方法

当サイトでは記事内に広告を含みます

この記事では、ExcelのVBAマクロを使用してグラフの範囲を指定や変更する方法について解説していきます。

特に、グラフのx軸やy軸の範囲を動的に操作する方法を中心に扱います。

ポイントとしては`Range`オブジェクト、`Chart`オブジェクト、`Series`コレクションを使用することです。

初心者にもわかりやすいよう、変数名を日本語ローマ字表記にしています。

それでは、詳細な手順とともに見ていきましょう!

 

VBAマクロでグラフ範囲を指定し折れ線グラフを描画する方法【CreateLineChart】

それではまず、VBAマクロを使って、折れ線グラフの範囲を指定する方法について解説していきます。

この例では、x軸にB列、y軸にC列のデータを使用し、それぞれの列の最終行までのデータをグラフに反映します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub CreateLineChart()
    Dim shiito As Worksheet
    Set shiito = ThisWorkbook.Sheets("Sheet1")

    Dim xRenzu As Range, yRenzu As Range
    Set xRenzu = shiito.Range("B1:B" & shiito.Range("B" & Rows.Count).End(xlUp).Row)
    Set yRenzu = shiito.Range("C1:C" & shiito.Range("C" & Rows.Count).End(xlUp).Row)

    Dim gurafu As Chart
    Set gurafu = shiito.Shapes.AddChart2(227, xlLine).Chart
    gurafu.SetSourceData Source:=Union(xRenzu, yRenzu)
End Sub

コードのAlt+F8を押し、マクロ選択画面でCreateLineChart関数を実行します。

このコードは、指定したシートからx軸とy軸のデータ範囲を取得し、それらを組み合わせて折れ線グラフを作成します。

 

VBAマクロでグラフ範囲を変更し散布図を描画する方法【ChangeScatterChartRange】

続いては、既存のグラフの範囲を変更して散布図を描画する方法について解説していきます。

この例では、x軸の範囲をB列からD列に、y軸の範囲をC列からF列に変更します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub ChangeScatterChartRange()
    Dim shiito As Worksheet
    Set shiito = ThisWorkbook.Sheets("Sheet1")

    Dim xRenzu As Range, yRenzu As Range
    Set xRenzu = shiito.Range("D1:D" & shiito.Range("D" & Rows.Count).End(xlUp).Row)
    Set yRenzu = shiito.Range("F1:F" & shiito.Range("F" & Rows.Count).End(xlUp).Row)

    Dim gurafu As Chart
    Set gurafu = shiito.Shapes.AddChart2(227, xlXYScatter).Chart
    gurafu.SetSourceData Source

:=Union(xRenzu, yRenzu)
End Sub

コードのAlt+F8を押し、マクロ選択画面でChangeScatterChartRange関数を実行します。

このコードは、指定した範囲を使用して散布図を新たに作成します。

VBAマクロでグラフ範囲を指定し、y軸が2つの折れ線グラフを描画する方法【CreateDualAxisLineChart】

最後に、y軸が2つの折れ線グラフを描画する方法を紹介します。

この例では、x軸にB列、y軸にC列とD列のデータを使用します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub CreateDualAxisLineChart()
    Dim shiito As Worksheet
    Set shiito = ThisWorkbook.Sheets("Sheet1")

    Dim xRenzu As Range, y1Renzu As Range, y2Renzu As Range
    Set xRenzu = shiito.Range("B1:B" & shiito.Range("B" & Rows.Count).End(xlUp).Row)
    Set y1Renzu = shiito.Range("C1:C" & shiito.Range("C" & Rows.Count).End(xlUp).Row)
    Set y2Renzu = shiito.Range("D1:D" & shiito.Range("D" & Rows.Count).End(xlUp).Row)

    Dim gurafu As Chart
    Set gurafu = shiito.Shapes.AddChart2(227, xlLine).Chart
    gurafu.SetSourceData Source:=Union(xRenzu, y1Renzu)
    gurafu.SeriesCollection.NewSeries
    gurafu.SeriesCollection(2).XValues = xRenzu
    gurafu.SeriesCollection(2).Values = y2Renzu
    gurafu.SeriesCollection(2).AxisGroup = 2
End Sub

コードのAlt+F8を押し、マクロ選択画面でCreateDualAxisLineChart関数を実行します。このコードでは、2つの異なるy軸データ範囲を持つ折れ線グラフを作成し、それぞれのデータ系列を別々のy軸に対応させます。

 

以上で、ExcelのVBAマクロを使用してグラフの範囲を指定や変更する方法についての解説を終えます。このようにVBAマクロを活用することで、グラフのカスタマイズやデータの動的な表示が可能になります。ぜひ活用してみてください。