Excelの棒グラフでは、特定のデータだけ目立たせたい場面が多くあります。たとえば、売上が基準を超えた箇所を赤く表示したい場合などです。
本記事では、Excel VBAを使用して特定の値を持つバーだけ色を変更し、視覚的に注目させる方法をご紹介いたします。
目次
サンプルコード:特定値のバーを赤くするVBAマクロ
Sub HighlightTargetBar()
Dim chartObj As Chart
Dim mainSeries As Series
Dim i As Long
Dim threshold As Long
' グラフの取得(先頭のグラフ)
Set chartObj = ActiveSheet.ChartObjects(1).Chart
' 対象の系列(1番目)を取得
Set mainSeries = chartObj.SeriesCollection(1)
' 注目させたい基準値
threshold = 12000
' 値を走査して条件一致したバーだけ色変更
For i = 1 To mainSeries.Points.Count
If mainSeries.Values(i) = threshold Then
mainSeries.Points(i).Format.Fill.ForeColor.RGB = RGB(255, 0, 0) ' 赤色
End If
Next i
End Sub
コード解説
ChartObjects(1).Chart
ワークシート内の最初のグラフオブジェクトを取得します。
SeriesCollection(1)
棒グラフの1つ目のデータ系列を対象としています。
Points(i)
それぞれのバー(データポイント)を個別に取得し、条件に合致するバーのみ色を変更しています。
RGB(255, 0, 0)
バーの塗りつぶし色を赤色に設定しています。他の色も自由に変更可能です。
よくある利用シーン
- 売上が特定金額を超えた箇所を強調表示したい
- 達成値・目標値に一致した項目だけ色を変えたい
- アウトライヤー(異常値)を目立たせたい
注意点
- グラフの種類は「棒グラフ」または「縦棒グラフ」が対象です。
- 値の一致は完全一致(
=
)で比較されます。範囲での条件(例:>=
)も可能です。 - VBAを実行する前に、対象のグラフがアクティブシートに存在している必要があります。
応用のヒント
以下のような条件も可能です:
If mainSeries.Values(i) > 15000 Then
mainSeries.Points(i).Format.Fill.ForeColor.RGB = RGB(0, 128, 0) ' 緑色で強調
End If
まとめ
Excel VBAを活用することで、特定の数値だけを視覚的に強調し、データの注目ポイントを明確にできます。手作業で色を変更する必要がなくなり、効率的なグラフ作成や報告書の作成が可能になります。
視覚的なインパクトを持たせたい業務レポートや、プレゼン用の資料にも大変効果的です。