【VBAリファレンス|実務向け】[VBAで自動化!折れ線グラフの「実績と予測」の色分けをスマートに行う方法]

スポンサーリンク

1. 導入:なぜこの技術が重要なのか

実務のレポート作成において「実績値」と「予測値」を一つの折れ線グラフに並べることは非常に多いです。しかし、標準機能だけでグラフの途中から色を変えようとすると、手作業での設定が必要になり、データ更新のたびに手間がかかります。この作業をVBAで自動化することで、データの更新に応じて「グラフの色分け」までを一瞬で完了させることができ、ミスの防止と業務効率化を大幅に図ることができます。

2. 基礎知識:グラフを色分けする仕組み

Excelのグラフ機能では、一つのデータ系列に対して途中の線だけ色を変えることはできません。そのため、実務では「実績データ」と「予測データ」の2つの系列に分けるのが鉄則です。
重要なのは、予測の開始地点に「実績の最後のデータと同じ値」をあえて含めることです。こうすることで、グラフ上で線が途切れることなく繋がり、視覚的に滑らかでプロフェッショナルな見た目を実現できます。

3. 実装/解決策

以下の手順でデータ構造を整え、VBAでグラフを生成します。
1. 表を「項目名」「実績」「予測」の3列に分ける。
2. 予測の開始行には、実績の最終値をコピーしておく(これで線が繋がります)。
3. VBAで「実績系列」と「予測系列」を個別に描画し、予測系列の色だけを変更する。

4. サンプルプログラム

以下のコードは、アクティブシートにある表を元にグラフを作成し、予測部分の色を自動で変更するサンプルです。

Sub CreateColoredLineChart()
‘ グラフのデータ範囲(A1:C10を想定)
Dim chartObj As ChartObject

‘ 既存のグラフを削除(リセット用)
For Each chartObj In ActiveSheet.ChartObjects
chartObj.Delete
Next chartObj

‘ グラフの新規作成
Set chartObj = ActiveSheet.ChartObjects.Add(100, 50, 400, 250)

With chartObj.Chart
.SetSourceData Source:=Range(“A1:C10”)
.ChartType = xlLineMarkers

‘ 系列2(予測)の色を赤に変更する設定
‘ 線の色を赤に設定
.SeriesCollection(2).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
‘ マーカーの色も赤に統一
.SeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
End With

MsgBox “グラフの作成と色分けが完了しました。”
End Sub

5. 応用・注意点

・データの空白処理:データが空の箇所がある場合、グラフが途切れることがあります。その場合はデータ範囲の空白セルを「0」にするか、VBAで「#N/A」を代入する処理を加えると、グラフの線が綺麗に維持されます。
・マーカーの重複:実績と予測の境界値(重複させているセル)でマーカーが重なって見えることがあります。気になる場合は、片方の系列のマーカーのみを非表示にする設定をVBAで追加すると、より洗練された仕上がりになります。
・メンテナンス性:データ行数が増減する場合は、`Range`を固定せず、`Cells(Rows.Count, 1).End(xlUp).Row`を使用して最終行を動的に取得するようにコードを書き換えるのが現場での定石です。

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