スポンサーリンク

【VBA】グラフの種類(縦棒・折れ線・円など)と設定(xlColumnClustered など)

Excel VBAでグラフを生成・編集する際に重要となるのが、グラフの種類の指定です。どんなデータをどのように見せたいかによって「縦棒」「折れ線」「円」「散布図」などの形式を選び、VBAでは Chart.ChartType プロパティに定数(例:xlColumnClustered)を指定することで種類を制御します。
ここでは代表的なグラフ種類を解説し、VBAでの設定方法と、注意すべきポイントを紹介します。


スポンサーリンク

1. グラフの種類を設定する基本構文

グラフ種類の設定には、以下のように ChartType プロパティを使います。

With chtObj.Chart
    .ChartType = xlColumnClustered  '集合縦棒グラフ
    .SetSourceData Source := Range("A1:B5") 'データ範囲
End With

このように、先にグラフを作成(例えば ChartObjects.Add で)しておき、その後に .ChartType に定数を指定します。 ChartType には多数の種類の定数が存在します。

例として:

  • xlColumnClustered → 集合縦棒グラフ(よく使う)
  • xlLine → 折れ線グラフ
  • xlPie → 円グラフ
  • xlXYScatter → 散布図(X-Y)

スポンサーリンク

2. 代表的なグラフ種類と定数例

以下は、VBAでよく使われるグラフ種類とその定数例をまとめたものです。

グラフ種類VBA定数(例)用途・特徴
縦棒グラフ(集合)xlColumnClustered複数データ系列を並べて比較する典型的なグラフ。
縦棒グラフ(積み上げ)xlColumnStacked順に積み上げて全体と構成比を示す。
折れ線グラフxlLine時系列変化や傾向を示す。
円グラフxlPie各項目が全体に占める比率を示す。 
散布図xlXYScatterX軸・Y軸両方の数値を持つデータの関係を見る。

この他にも多くのバリエーション(3D表示、100%積み上げ、レーダーなど)があります。
コード例としては:

Sub ExampleChartTypes()
    Dim chtObj As ChartObject
    Set chtObj = ActiveSheet.ChartObjects.Add(100, 50, 400, 250)
    With chtObj.Chart
        .ChartType = xlPie '円グラフに設定
        .SetSourceData Source:=Range("A1:B5")
    End With
End Sub

スポンサーリンク

3. グラフ種類を変更するケース:実務で考えるポイント

実務でVBAを使ってグラフを自動生成・更新する際には、以下のような観点でグラフ種類を選ぶと良いです。

  • 目的に合った形式を選ぶ
    比較が目的なら「縦棒」、変化の傾向が目的なら「折れ線」、比率を示したいなら「円」など。
  • 系列の数/データ構成を考慮
    データ系列が多ければ縦棒か積み上げ縦棒、2つの数値変数なら散布図。
  • 見やすさ・読み取りやすさ
    円グラフは項目が少ない方が分かりやすい。多数項目なら縦棒などが好ましい。
  • コードの可読性・保守性
    .ChartType = xlColumnClustered などの定数で種類を明確に指定しておくと、将来変更しやすくなります。

スポンサーリンク

4. VBAで “系列別にグラフ種類を変える” 方法

グラフ全体の種類だけでなく、データ系列(SeriesCollection)ごとに種類を変えることも可能です。例えば、縦棒+折れ線の複合グラフを作成したい場合など。

コード例:

Dim chtObj As ChartObject
Set chtObj = ActiveSheet.ChartObjects.Add(100, 50, 400, 250)
With chtObj.Chart
    .SetSourceData Source:=Range("A1:C6")
    .SeriesCollection(2).ChartType = xlLine   '第2系列を折れ線グラフに
End With

コードの動き

  • ActiveSheet.ChartObjects.Add(100, 50, 400, 250) → シートに新しいグラフオブジェクトを追加。
  • SetSourceData Source:=Range("A1:C6") → A1:C6 をデータ範囲に指定。
    • A列:カテゴリ(横軸ラベル)
    • B列:第1系列(既定で縦棒)
    • C列:第2系列(折れ線に変更予定)
  • .SeriesCollection(2).ChartType = xlLine → 第2系列だけ折れ線グラフに変更。

注意点

  • SetSourceData を使うと、最初は「すべて同じ種類のグラフ」で作成されます(既定は縦棒)。
  • その後に SeriesCollection(2).ChartType = xlLine を指定することで「複合グラフ」になります。
  • 系列の順番はデータ範囲の列順に依存します。
    • B列 → SeriesCollection(1)
    • C列 → SeriesCollection(2)

このようにして、各系列に設定を加えることで、複雑な見せ方もVBAで自由に制御できます。


5. おすすめの設定手順

コードを書く順序としては:

  1. グラフオブジェクトを追加(ChartObjects.Add
  2. SetSourceData でデータ範囲を設定
  3. .ChartType = 定数 で種類を指定
  4. 必要に応じて系列別の種類変更・軸設定・タイトル設定

6. まとめ

  • VBAでグラフの種類を指定するには、Chart.ChartType = 定数 を使うのが基本。
  • 代表的な定数には xlColumnClustered(縦棒)、xlLine(折れ線)、xlPie(円)などがあります。
  • 実務では「目的・データ構成・読みやすさ」を考えて種類を選び、系列別設定も活用すると柔軟なグラフが作れます。

コメント

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