Excel VBA 離れたデータでグラフ(Chart)を作成する

グラフ作成/操作

今回は離れたデータを使用して、グラフを作成する方法をご説明します。

Excelのシート上にグラフを作成する基本的な方法はシートを指定して、「Shapes.AddChart」で表示領域を作成し、その中にChartオブジェクトのグラフの種類などを指定します。

グラフの取得や、その他グラフ作成方法、詳細設定方法については次の記事をご覧ください。

1.グラフを作成する方法

今回は棒グラフを使用してご説明しますが、基本的にはグラフの種類を変更する事でほかのグラフを作成することができます。

もっともシンプルに棒グラフを作成する方法は次のように記述します。

棒グラフを作成するには「Chart」オブジェクトの「ChartType」を「xlColumnClustered」と指定します。

また、「SetSourceData」でデータ範囲を指定しています。

Sub Sample1()

With ActiveSheet.Shapes.AddChart.Chart

    .ChartType = xlColumnClustered
    .SetSourceData Range(Cells(1, 1), Cells(13, 5))

End With

End Sub

サンプルデータでは、このようにグラフが作成されます。

2.離れたデータでグラフを作成する

データ範囲の指定には「SetSourceData」で指定しますが、上記では連続したデータをまとめて指定しましたが、上記のデータの離れた一部のデータや、そもそも離れた場所に入力されたデータを指定したい場合には、次のように指定します。

.SetSourceData Range("項目軸ラベルのデータ範囲, グラフのデータ範囲")

次は下の図のようなデータをグラフにする場合のサンプルコードです。

先ほどのサンプルコードを次のように記述します。

Sub Sample2()

With ActiveSheet.Shapes.AddChart.Chart

    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:A13, D1:G13")

End With

End Sub

この方法では動的に範囲を指定出来ませんが、動的な範囲を取得する場合には少し複雑になります。

3.離れたデータを動的に取得してグラフを作成する

「Range(“A1:A13, D1:G13”)」の離れた範囲を動的にするには「Unionメソッド」を使用します。

Set TrRange = Union(項目軸範囲, グラフデータ範囲)

この様に記述する事で、Cellsで表現する事ができます。

少し長くなりますが、上記のサンプルコードをcellsを使用して動的に指定します。

ポイントは「Union」でデータ範囲を結合しているところです。

Sub Sample3()

Dim TrRange As Range
Dim MaxRow  As Long

MaxRow = Cells(Rows.Count, 1).End(xlUp).Row

Set TrRange = Union(Range(Cells(1, 1), Cells(MaxRow, 1)), Range(Cells(1, 4), Cells(MaxRow, 7)))

With ActiveSheet.Shapes.AddChart.Chart

    .ChartType = xlColumnClustered
    .SetSourceData TrRange

End With

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