Excel

エクセルVBAでグラフに新しいデータ系列を追加する

2021-09-10

グラフに新しい系統を追加する方法です。

参考:エクセルのグラフで系列の参照範囲を変更する

系統の追加例

グラフのもとになるデータに「名古屋」のデータを追加します。

赤枠のF列~G列です。

シート「2021」

データのあるシート名は「2021」です。

シート「2021」

マクロを実行すると系統が追加されます。

追加後のグラフ

グラフで使用したデータ

グラフの選択の違いとサンプルコード

3つの方法です。

  • シート上のグラフ・グラフのあるシートを選択している状態
  • シート上のグラフ・グラフを選択している状態
  • グラフシート・グラフデータのあるシートを選択している状態

グラフの選択について

シート上にあるグラフとグラフシートの違いです。

シート上のグラフ

グラフのあるシート「2021」の(セルA1)を選択している状態です。グラフは「ChartObjects(1)」です。

シートにあるグラフ

この状態でグラフを選択する場合のコードです。

ActiveSheet.ChartObjects(1).Select

グラフシシート

グラフシートを選択している状態です。グラフシートは「Charts(1)」です。

グラフシート
Charts(1).Select

系列の追加

SeriesCollection.NewSeriesメソッドで新しいデータ系列を追加します。

SeriesCollection.NewSeries

サンプルコード

選択状態の違いによる3つの方法です。

グラフがあるシートを選択した状態

系統を追加したいグラフがあるシート「2021」を選択した状態で実行する例です。

系統追加のデータはF列~G列の固定での例です。

Sub sample1()
    Dim sc As Series
    Dim ws As String: ws = ActiveSheet.Name
    Dim lastR As Long: lastR = Cells(Rows.Count, 6).End(xlUp).Row
    
    Set sc = ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        With sc
            .Name = "='" & ws & "'!R1C6"
            .XValues = Range(Cells(4, 6), Cells(lastR, 6))
            .Values = Range(Cells(4, 7), Cells(lastR, 7))
        End With
End Sub

マクロ実行後の画面です。

マクロ実行後

グラフを選択した状態

系統を追加したいグラフを選択した状態で実行する例です。

統追加のデータはF列~G列の固定での例です。

Sub sample2()
    Dim sc As Series
    Dim ws As String: ws = ActiveSheet.Name
    Dim lastR As Long: lastR = Cells(Rows.Count, 6).End(xlUp).Row
    
    Set sc = ActiveChart.SeriesCollection.NewSeries
        With sc
            .Name = "='" & ws & "'!R1C6"
            .XValues = Range(Cells(4, 6), Cells(lastR, 6))
            .Values = Range(Cells(4, 7), Cells(lastR, 7))
        End With
End Sub

マクロ実行後の画面は「グラフがあるシートを選択した状態」と同じです。

グラフデータのあるシートをを選択している状態

系統を追加したいグラフシートのデータがあるシート「2021」を選択した状態で実行する例です。

系統追加のデータはF列~G列の固定での例です。

Sub sample3()
    Dim sc As Series
    Dim ws As String: ws = ActiveSheet.Name
    Dim lastR As Long: lastR = Cells(Rows.Count, 6).End(xlUp).Row
    
    Set sc = Charts(1).SeriesCollection.NewSeries
        With sc
            .Name = "='" & ws & "'!R1C6"
            .XValues = Range(Cells(4, 6), Cells(lastR, 6))
            .Values = Range(Cells(4, 7), Cells(lastR, 7))
        End With
End Sub

マクロ実行後の画面です。

グラフシート

-Excel
-

© 2021 オフィスのQ&A