Excel VBAで第2軸を活用した複合グラフを作成する方法

目次

概要

売上金額と伸び率など、スケールの異なる系列を同じグラフで比較すると、片方が極端に小さく表示され見づらくなる場合があります。VBA を使って対象系列を第 2 軸に移動させれば、両方の変化を直感的に確認できます。本記事では、シート「Insight」にある 1 番目のグラフ内で系列「GrowthRate」を第 2 軸に設定し、折れ線(マーカー付き)へ変更する手順を解説いたします。

サンプルコード

Sub SetSecondaryAxis()
    Dim ws   As Worksheet   ' 操作対象シート
    Dim cht  As Chart       ' グラフ本体

    ' シートとグラフを取得
    Set ws  = ThisWorkbook.Worksheets("Insight")
    Set cht = ws.ChartObjects(1).Chart

    ' 指定系列を第2軸へ移動し、折れ線へ変更
    With cht.SeriesCollection("GrowthRate")
        .AxisGroup = xlSecondary
        .ChartType = xlLineMarkers
    End With
End Sub

コード解説

まず Worksheets("Insight") で対象シートを取得し、ChartObjects(1) で最前面のグラフを取得しております。SeriesCollection("GrowthRate") で伸び率の系列を特定し、AxisGroup = xlSecondary で第 2 軸へ移動します。続けて ChartType = xlLineMarkers を指定することで、折れ線にマーカーを付加した視認性の高い表示へ変更できます。

応用

複数系列を第 2 軸に割り当てたい場合は、系列名を配列で保持し For Each ループで同様の設定を行うと効率的です。また、グラフを縦棒+折れ線の形式に変更する際は、第 1 軸を棒グラフ、第 2 軸を折れ線に設定すると、値の大小をバランス良く示すことができます。

まとめ

第 2 軸を活用すると、異なる単位や桁数を持つデータを同一グラフで比較でき、報告資料の可読性が向上いたします。系列名やシート名を変数化すれば、複数グラフへの一括適用も簡単に行えますので、ぜひご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次