この記事では、以下の画像のような階段状の積み上げ棒グラフをVBAを使って一発作成する方法をご紹介します。
たまに企業の決算報告等で見るやつですね。
今回紹介するものを使えば、上記のように単純な積み上げだけではなく、マイナス数値を積み下ろすことも可能です。
非常に便利ですので、ぜひご活用ください。
それではさっそくやっていきましょう。
※この記事ではVBAを使用します。つかったことがない方は、まずは以下の記事を参考にVBAの実行環境を構築しましょう。
エクセルマクロ(VBA)の始め方!初心者向けに画像を使って詳細解説
ベースとなるデータを用意する
グラフを作成するうえで、まずはデータがないと始まりません。
というわけで今回は以下のデータを使っていこうと思います。
今回は7行分しかありませんが、基本的には何行あっても対応可能です。
また、今回はグラフを作成する都合上、データの右隣2列分は空白にしておいてください。
基本的にあなたがやるべきことはこのデータ作成およびデータの存在領域(今回の場合はA1セルからD7セル)をVBAコード中で指定してあげるだけです。
それでは実際のコーディング作業に入っていきましょう。
階段状積み上げ棒グラフを作成するVBAコード
さっそくですが、以下が冒頭に紹介した階段状積み上げ棒グラフを作成するVBAコードです。
Sub Make_step_grf()
Dim num_data As Integer
Dim data As Variant
Dim grf_title As String
'データ領域を指定(2列分余分にとっておく)
Set data_region = Range("A1:D7")
'グラフのタイトルを指定
grf_title = "前年比改善効果(億円)"
'グラフ用データ作成処理開始
data = data_region
num_data = UBound(data, 1)
data(1, 3) = 0
data(1, 4) = Abs(data(1, 2))
For i = 1 To num_data - 1
If data(i, 2) > 0 And data(i + 1, 2) > 0 Then
data(i + 1, 3) = data(i, 2) + data(i, 3)
ElseIf data(i, 2) > 0 And data(i + 1, 2) < 0 Then
data(i + 1, 3) = data(i, 2) + data(i, 3) + data(i + 1, 2)
ElseIf data(i, 2) < 0 And data(i + 1, 2) < 0 Then
data(i + 1, 3) = data(i, 3) + data(i + 1, 2)
Else
data(i + 1, 3) = data(i, 3)
End If
data(i + 1, 4) = Abs(data(i + 1, 2))
Next
For i = 1 To num_data
data_region(i, 3) = data(i, 3)
data_region(i, 4) = data(i, 4)
Next
'グラフ作成処理
data_region.Select
ActiveSheet.Shapes.AddChart2(297, xlColumnStacked).Select
ActiveChart.FullSeriesCollection(1).Delete
'積み上げ部分を透明に
ActiveChart.FullSeriesCollection(1).Format.Fill.Visible = msoFalse
'改善は黒色、悪化は赤色に変更
For i = 1 To num_data
ActiveChart.FullSeriesCollection(2).Points(i).Select
If data(i, 2) > 0 Then
Selection.Format.Fill.ForeColor.RGB = RGB(0, 0, 0)
Selection.Format.Fill.TwoColorGradient msoGradientHorizontal, 1
Selection.Format.Line.ForeColor.RGB = RGB(0, 0, 0)
Else
Selection.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
Selection.Format.Fill.TwoColorGradient msoGradientHorizontal, 2
Selection.Format.Line.ForeColor.RGB = RGB(255, 0, 0)
End If
Next
'グラフの見栄え調整
ActiveChart.Legend.Delete
ActiveChart.ChartTitle.Text = grf_title
End Sub
先ほども説明したようにコードの6行目でデータの存在領域を指定してあげています。
また、8行目では作成したグラフのタイトルを指定しています。
基本的に指定すべき点はこれだけです。
なお、グラフの色やグラデーションを変更したい場合は、35行目以降を適宜変更してください。
以下がその際の参考記事です。
【エクセルVBA】棒グラフのバーの色を変更&グラデーション化する方法!
サンプルコードの実行結果
最後に先ほどのサンプルコードを実行してみましょう。
実行前は以下のようにデータだけが存在する状態です。
この状態から、開発タブ⇒マクロ⇒Make_step_grfを選択⇒実行の順で実行します。
すると以下のようにデータが追記され、さらにグラフが出力されました。
改善、悪化がわかりやすくて良いですね。
おわりに
というわけで今回はデータから階段状の積み上げ棒グラフ一発作成する方法をご紹介しました。
ぜひ資料作成の際などにご活用ください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント