大体でIT

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

大体でIT

Excel VBAで、グラフの参照範囲を変更するには、「SetSourceData」を使います。グラフにデータを追加して、グラフに反映したい場合に使えます。離れたセル範囲を参照したい場合は、「Union」を使いましょう。

はじめに

この記事では、参照範囲を設定する方法について、ご紹介します。

参照範囲を設定するには、「.SetSourceData」を使います。

元データにデータを追加した場合に、「.SetSourceData」を使えば、X軸のデータでも系列のデータでも、グラフに反映することができます。

離れたセル範囲をグラフに参照したい場合は、「Union」を使うとできます。

グラフの参照範囲を変更する場合は、「.SetSourceData」を使いましょう。

では、参照範囲を設定する方法について、解説していきます。

この記事で紹介すること

  • VBAでグラフの参照範囲を設定する方法

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

目次

VBAコードまとめ

グラフの参照範囲を変更するVBAコードについて、まとめています。

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

'参照範囲を設定
ActiveSheet.ChartObjects(1).Chart.SetSourceData Range("A1:C3")

'離れたセル範囲を参照
ActiveSheet.ChartObjects(1).Chart.SetSourceData Union(Range("A1:B4"), Range("D1:D4"))

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

グラフの参照範囲を変更する

グラフの参照範囲を変更してみます。

SetSourceDataを使う

グラフの参照範囲を変更するには、「SetSourceData」を使います。

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

この記事では、「元データ」と「グラフ」は同じシート内にあるものとして記載いています。

グラフが別シートにある場合

別シートにグラフがある場合は、参照範囲に「シート」を指定する必要があります。

別シートのグラフの参照範囲を設定する方法について、詳細はこちらでまとめています。

では、本題に戻します。実際にグラフの参照範囲を変更してみます。

参照範囲を変更してみる

参照範囲を「Range("A1:C3")」に変更してみます。

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

列方向のデータを系列としておきたいので、「.PlotBy = xlColumns」としています。

グラフを用意しておきます。

元グラフ

グラフを用意しておきます

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

「参照範囲」を変更できた

「参照範囲」を変更できました

「参照範囲」を変更できました。

データを追加してグラフに反映してみる

データを追加してグラフに反映してみます。

データを追加する

「X軸」のデータを追加してみます。

元データにデータを追加

元データにデータを追加しました

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

この「追加したデータ」を「SetSourceData」を使って反映してみます。

参照範囲を変更して追加データを反映

参照範囲を変更して追加データを反映してみます。

セル範囲を指定する際は、「CurrentRegion」を使うと便利です。

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

列方向のデータを系列としていので、「.PlotBy = xlColumns」としています。

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

「追加データ」を反映できた

VBAで「追加データ」を反映できました

VBAで「追加データ」を反映できました。

系列のデータを追加してグラフに反映してみる

系列のデータを追加してグラフに反映してみます。

「系列のデータ」も反映することができます。

系列のデータを追加

系列のデータを追加します。

系列なので、列方向にデータを追加します。

「系列」のデータを追加

「系列」のデータを追加しました

「系列」のデータを追加しました。

参照範囲を変更してみる

参照範囲を変更して、系列のデータを追加してみます。

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

列方向のデータを「系列」にしたいので、「.PlotBy = xlColumns」としています。

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

「系列」を追加できた

VBAで「系列」を追加できました

VBAで「系列」を追加できました。

離れたセル範囲を参照してみる

離れたセル範囲を参照してみます。

参照したいセル範囲

次のように、離れたセルを参照したいです。

離れたセル範囲を参照したい

離れたセル範囲を参照したい

離れたセルを参照する場合は、「Union」が便利です。

「Union」が便利

「Union」を使って、離れたセル範囲を、グラフに参照してみます。

「Range("A1:B4")」と「 Range("D1:D4")」を「Union」に入れることで、離れたセルを参照できます。

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

列方向のデータを系列としたいので、「.PlotBy = xlColumns」としています。

グラフを用意しておきます。

元グラフ

グラフを用意しておきます

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

「離れたセル」を参照できた

VBAで「離れたセル」を参照できました

VBAで「離れたセル」を参照できました。

行数が変動する場合

行数が変動する場合は、「.End(xlUp)」を使って、最終行を取得しておくと、あとから変更する必要がなくなります。

例えば、「行方向」にデータが増える場合です。

グラフの「行数」が変動する場合

グラフの「行数」が変動する場合

「.End(xlUp)」を使えば、最終行を取得できます。

「最終行」を取得する

「最終行」を取得する

最終行を取得すれば、行方向にデータが追加されても、同じVBAコードを使うことができます。

では、最終行を取得して、離れたセル範囲を、グラフに設定してみます。

「最終行を取得」してグラフの範囲を設定する

最終行は、「ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row」とすれば、取得できます。

Sub TEST6()
    
    '最終行を取得
    Dim LastRow
    LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
    
    '参照範囲を設定
    ActiveSheet.ChartObjects(1).Chart.SetSourceData Union(Range("A1:B" & LastRow), Range("D1:D" & LastRow))
    
    '「横方向のデータ」を系列にする
    ActiveSheet.ChartObjects(1).Chart.PlotBy = xlColumns
    
End Sub

グラフを用意しておきます。

グラフを用意しておきます

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

VBAで「最終行を取得」してグラフの範囲を設定できました

VBAで「最終行を取得」してグラフの範囲を設定できました。

おわりに

この記事では、参照範囲を設定する方法について、ご紹介しました。

参照範囲を設定するには、「.SetSourceData」を使います。

元データにデータを追加した場合に、「.SetSourceData」を使えば、X軸のデータでも系列のデータでも、グラフに反映することができます。

離れたセル範囲をグラフに参照したい場合は、「Union」を使うとできます。

グラフの参照範囲を変更する場合は、「.SetSourceData」を使いましょう。

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

関連する記事から探す

カテゴリから探す

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

アーカイブから探す