縦棒グラフの支店ごとに棒の色を変えるマクロ
動画でExcel グラフのマクロ、支店ごとに棒の色を変える
グラフのマクロ、支店ごとに棒の色を変える
動画版「マクロ講座」です。
サンプルのグラフはブルーの単色のグラフです。
単色のグラフをあるいは、テーマカラーの色のグラフでもいいんですが、系列の支店ごとに色を変えたいというような場合がありますね。
あるいは他の支店は同じに色して該当支店だけ色を変えて分かりやすくしたいというようなこともあるかと思います。
あるいは他社製品と自社製品を比べるときに自社製品だけ色を付けたいんだというようなこともあるかもしれません。
そういう時に一つずつ色を変えていたのでは大変ですから、これをマクロで実行しようということです。
(サンプルファイルは、こちらです。 グラフのマクロ、支店ごとに棒の色を変える、サンプル107回)
マクロ動画 グラフのマクロ、支店ごとに棒の色を変える
マクロ系列の支店ごとに色を変える
-
単色のグラフやテーマカラーのグラフではなく、系列の支店ごとに色を変えたいというケースです。
支店ごとに色を決めておけば、月が変わってもグラフの色が決まっているのでとても見やすいです。 -
単色のグラフと色分けされたグラフを比べれば、どちらがより見やすいか一目瞭然ですね。
-
支店ごとにどの色を使うかはあらかじめ決めておきます。サンプルではA列にグラフで使う人を表示しておきました。
-
VBAコードの方ではグラフのことをチャートオブジェクトと言います。チャートを変更したりするには、ChartObjectsを選択します。
Sheet1.ChartObjects(1).Activate -
棒グラフ一本をクリックすると全部が選択されます。
グラフのマクロコードの書き方
-
この縦棒グラフの一本一本はデータ系列で、それらは集合体です。 "Chart.フルシリーズコレクション"または"チャートドットシリーズコレクションと言います。
-
今回使う変数はこちらです。変数グラフは、なじみのあるgraph
Dim graph As Chart -
他に、系列は名前が長いのでfullsc としました。fullsc 色を指定する際に、R、G、Bを使うのでLong型の変数にしました。
Dim fullsc As SeriesCollection
Dim r As Long, g As Long, b As Long -
初めにSheet1のChartObjects(1)をアクティブにします。
Sheet1.ChartObjects(1).Activate
Set graph = ActiveChart -
系列をセットします。
Set fullsc = graph.SeriesCollection
縦棒の色塗はFor文で回す
-
Excelのチャートに戻って確認しますと、
ActiveChart.FullSeriesCollection(1).Select
の状態がこの画像の状態です。 -
こちらは1本だけ選択した状態とそのコードです。
-
For文を使って1本ずつ設定していきましょう。
-
RGBをA列の指定セルから取得した色で設定します。
r = Rcolor Mod 256
g = Rcolor \ 256 Mod 256
b = Rcolor \ 65536 Mod 256
-
さらに選択した系列にその色をRGBでセットすると、色が塗られます。
-
コードは以下のようになります。
Option Explicit Dim graph As Chart, i As Long, j As Long, Rcolor As Long Dim fullsc As SeriesCollection Dim r As Long, g As Long, b As Long '色のRGB値 Sub ChartColorChange2() Sheet1.ChartObjects(1).Activate Set graph = ActiveChart Set fullsc = graph.SeriesCollection For j = 1 To fullsc.Count For i = 1 To fullsc(1).Points.Count fullsc(j).Points(i).Select Rcolor = Sheet1.Cells(i + 2, 1).Interior.Color r = Rcolor Mod 256 g = Rcolor \ 256 Mod 256 b = Rcolor \ 65536 Mod 256 With Selection.Format.Fill .ForeColor.RGB = RGB(r, g, b) End With Next i Next j End Sub
ステップ実行で系列に色が塗られるのを確認しています。 -
結果はこのように系列の1本ごとに設定して色で塗分けられて、とても見やすいグラフになりました。