大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、グラフに系列を追加する方法について、ご紹介します。2通りの方法があって、「NewSeries」と「SetSourceData」を使う方法があります。「SetSourceData」の方が設定が簡単です。追加する系列のデータを含めてセル範囲を参照すれば、簡単に系列を追加できます。

はじめに

この記事では、グラフに系列を追加する方法について、ご紹介します。

系列の追加は、2通りの方法があります。

「NewSeries」を使う方法と「SetSourceData」を使う方法です。

「SetSourceData」を使う方が、設定が簡単です。

追加する系列のデータを含めてセル範囲を参照すると、系列を追加することができます。

では、グラフに系列を追加する方法について、解説していきます。

この記事で紹介すること

  • VBAでグラフに系列を追加する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

グラフに系列を追加するVBAコードについて、まとめています。

VBAコードだけ確認したい場合に、ご活用ください。

'「系列」の追加
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
    .XValues = Range("A2:A4") 'X軸のデータ
    .Name = Range("B1") '系列名
    .Values = Range("B2:B4") 'データ範囲
End With

'参照範囲を設定して系列を追加
ActiveSheet.ChartObjects(1).Chart.SetSourceData Range("A1").CurrentRegion '参照範囲を設定する
ActiveSheet.ChartObjects(1).Chart.PlotBy = xlColumns '「横方向のデータ」を「系列」

では、解説していきます。

グラフに系列を追加する

グラフに系列を追加してみます。

NewSeriesを使う

系列を追加するには、「NewSeries」を使う方法があります。

X軸のデータと、系列名、データ範囲を「XValues」、「.Name」、「.Values」を使って設定します。

'新しい系列追加
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
    .XValues = X軸のデータ
    .Name = 系列名
    .Values = データ範囲
End With

という感じです。

「XValues」「Name」「Values」の箇所を、データソースでみるとこんな感じです。

「XValues」「Name」「Values」の箇所

「XValues」「Name」「Values」の箇所

では、「NewSeries」を使って、系列を追加してみます。

系列を追加してみる

「NewSeries」で系列を追加してみます。

X軸のデータは既に設定されているので、「.Name」と「.Values」で系列名とデータ範囲を設定します。

Sub TEST1()
    
    '新しい系列追加
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        .Name = Range("E1") '系列名
        .Values = Range("E2:E4") 'データ範囲
    End With

End Sub

元データにデータを追加します。

元データにデータを追加

元データにデータを追加

では、VBAコードを実行してみます。

系列を追加

NewSeriesで系列を追加できました

NewSeriesで系列を追加できました。

初期状態から系列を追加してグラフを作成

もう少し「NewSeries」の使い方をみるために、初期状態から系列を追加してグラフを作成してみます。

初期状態から系列を追加して作成

初期状態から系列を追加して作成するVBAコードです。

手順としては、

  • グラフを作成
  • グラフの種類を設定
  • X軸と1つ目の系列名と系列のデータを設定
  • 2つ目の系列名と系列のデータを設定
  • 3つ目の系列名と系列のデータを設定
  • 4つ目の系列名と系列のデータを設定
  • 凡例を表示

という流れです。

Sub TEST2()
    
    'グラフを挿入
    ActiveSheet.Shapes.AddChart2
    ActiveSheet.ChartObjects(1).Chart.ChartType = xlColumnClustered '集合縦棒
    
    '「X軸のデータ」と「1つ目の系列」を追加
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        .XValues = Range("A2:A4") 'X軸のデータ
        .Name = Range("B1") '系列名
        .Values = Range("B2:B4") 'データ範囲
    End With
    
    '「2つ目の系列」を追加
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        .Name = Range("C1") '系列名
        .Values = Range("C2:C4") 'データ範囲
    End With
    
    '「3つ目の系列」を追加
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        .Name = Range("D1") '系列名
        .Values = Range("D2:D4") 'データ範囲
    End With
    
    '「4つ目の系列」を追加
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        .Name = Range("E1") '系列名
        .Values = Range("E2:E4") 'データ範囲
    End With
    
    '凡例を追加
    ActiveSheet.ChartObjects(1).Chart.HasLegend = True
    ActiveSheet.ChartObjects(1).Chart.Legend.Position = xlBottom '下に表示
    
End Sub

元データを用意しておきます。

元データ

元データ

では、VBAコードを実行してみます。

初期状態から系列を追加して作成

初期状態から系列を追加して作成

初期状態から系列を追加して作成できました。

一つずつVBAコードを実行して、流れをみてみます。

グラフを挿入してグラフ種類を設定

最初は、グラフを挿入してグラフ種類を設定します。

Sub TEST3()
    
    'グラフを挿入
    ActiveSheet.Shapes.AddChart2
    ActiveSheet.ChartObjects(1).Chart.ChartType = xlColumnClustered '集合縦棒
    
End Sub

VBAコードを実行します。

グラフを挿入してグラフ種類を設定

グラフを挿入してグラフ種類を設定

グラフを挿入してグラフ種類を設定できました。

「X軸」と「1つ目の系列」を追加

次は、「X軸」と「1つ目の系列」を追加します。

Sub TEST4()
    
    '「X軸のデータ」と「1つ目の系列」を追加
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        .XValues = Range("A2:A4") 'X軸のデータ
        .Values = Range("B2:B4") 'データ範囲
        .Name = Range("B1") '系列名
    End With

End Sub

VBAコードを実行します。

「X軸」と「1つ目の系列」を追加

「X軸」と「1つ目の系列」を追加

「X軸」と「1つ目の系列」を追加できました。

「2つ目の系列」を追加

「2つ目の系列」を追加します。

Sub TEST5()

    '「2つ目の系列」を追加
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        .Values = Range("C2:C4") 'データ範囲
        .Name = Range("C1") '系列名
    End With

End Sub

VBAコードを実行します。

「2つ目の系列」を追加

「2つ目の系列」を追加

「2つ目の系列」を追加できました。

「3つ目の系列」を追加

「3つ目の系列」を追加します。

Sub TEST6()

    '「3つ目の系列」を追加
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        .Values = Range("D2:D4") 'データ範囲
        .Name = Range("D1") '系列名
    End With

End Sub

VBAコードを実行します。

「3つ目の系列」を追加

「3つ目の系列」を追加

「3つ目の系列」を追加できました。

「4つ目の系列」を追加

「4つ目の系列」を追加します。

Sub TEST7()
    
    '「4つ目の系列」を追加
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
        .Values = Range("E2:E4") 'データ範囲
        .Name = Range("E1") '系列名
    End With
    
End Sub

VBAコードを実行します。

「4つ目の系列」を追加

「4つ目の系列」を追加

「4つ目の系列」を追加できました。

「凡例」を表示

「凡例」を表示します。

Sub TEST8()

    '凡例を追加
    ActiveSheet.ChartObjects(1).Chart.HasLegend = True
    ActiveSheet.ChartObjects(1).Chart.Legend.Position = xlBottom '下に表示

End Sub

VBAコードを実行します。

「凡例」を表示

「凡例」を表示

「凡例」を表示できました。

という感じで、「NewSeries」を使って、系列を追加することができます。

「NewSeries」を使って配列からグラフを作成する

さらに「NewSeries」を応用すれば、「配列」からグラフを作成することもできます。

セルに値を代入したくない場合に使えます。

配列からグラフを作成する方法について、詳細はこちらでまとめています。

ただし、系列の追加だけであれば、「SetSourceData」の方が簡単に系列を追加できます。

データ範囲を再設定して系列を追加

データ範囲を再設定して系列を追加してみます。

SetSourceDataを使う

「SetSourceData」を使って、系列を追加してみます。

'参照範囲を設定
ActiveSheet.ChartObjects(1).Chart.SetSourceData 参照するセル範囲

'系列のデータを選択
ActiveSheet.ChartObjects(1).Chart.PlotBy = 系列にするデータ

参照するセル範囲を「追加する系列」のデータを含めて、設定します。

参照範囲を再設定すると、系列が変わってしまう場合があるので、「.PlotBy」で系列にするデータを設定します。

では、実際にやってみます。

参照範囲を再設定して系列を追加

参照範囲を再設定して系列を追加してみます。

Sub TEST9()
    
    '参照範囲を設定する
    ActiveSheet.ChartObjects(1).Chart.SetSourceData Range("A1").CurrentRegion
    
    '「横方向のデータ」を「系列」にする
    ActiveSheet.ChartObjects(1).Chart.PlotBy = xlColumns
    
End Sub

元データにデータを追加します。

元データにデータを追加

元データにデータを追加

では、VBAコードを実行してみます。

参照範囲を再設定して系列を追加

参照範囲を再設定して系列を追加

参照範囲を再設定して「系列を追加」できました。

「SetSourceData」の方が設定が簡単です。

「SetSourceData」を使えば、離れたセル範囲の参照も簡単です。

使い方について、詳細はこちらでまとめています。

おわりに

この記事では、グラフに系列を追加する方法について、ご紹介しました。

系列の追加は、2通りの方法があります。

「NewSeries」を使う方法と「SetSourceData」を使う方法です。

「SetSourceData」を使う方が、設定が簡単です。

追加する系列のデータを含めてセル範囲を参照すると、系列を追加することができます。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す