Excelでグラフを作成すると、1番目の色、2番目の色・・・と決まった色で設定されます。
これをグラフ要素ごとに色を決めて表示する方法です。
この記事の目次
円グラフの要素の色
たとえば、下のように関東の表では、A社→B社→C社→D社の順位で、円グラフの要素の色は赤→黄緑→水色→ピンクです。
九州の表では、D社→C社→B社→A社の順位で、円グラフの要素は同じく赤→黄緑→水色→ピンクとなります。
円グラフの要素の色を固定
これを、下の画像のようにA社は常に赤、B社は黄緑、C社は水色、D社はピンクというように会社ごとに色を固定したい場合の方法です。
毎回、グラフの要素ごとに設定を変更すればいいのですが、面倒なのでマクロを作成してみました。
※積み上げ棒グラフの系列ごとの色固定は、マクロも作りやすいのですが、円グラフは簡単にはできないんですね。
ネットで検索して、あちこちのサイトにお世話になりながら思いついた方法です。
本当はもっとスマートな方法があるかもしれません。
上の関東の表は、A社が赤、B社が黄緑、C社が青、D社がピンクになっているので、各要素の色はこの色で固定します。
セル[A1]からセル[A4]の色の順番が円グラフの色の順番になります。
九州の会社名をコピーします。
ここではセル[C18]からセル[C21]までです。
セル[A1]に貼り付けます。
マクロを実行したい円グラフを選択して、マクロの[円グラフの色指定]を実行します。
九州の円グラフは、A社が赤、B社が黄緑、C社が青、D社がピンクになります。
A列は削除して構いません。
このマクロは、円グラフの色設定(Chart,SeriesCollection)|VBAサンプル集:Excelマクロサンプル集を参考にさせていただきました。
(人-)謝謝
では、マクロです。
[色設定]と[円グラフの色指定]の2つですが、実行するのは[円グラフの色指定]です。
[円グラフの色指定]の中で、[色設定]マクロを呼び出しています。
RGB値は、Office TANAKA - グラフ[ColorプロパティとRGB関数について]を参考に計算しました。
VBAは、得意ではないので、上記サイトで学習しながら作成したものです。
一応、これで動作はしています。
ピボットグラフでも使えます。(Excel2010で確認)
あくまで参考として見てください。
Sub 色設定()
Dim FoundCell As Range
Set FoundCell = Range("A1:A4").Find(What:="A社")
If FoundCell Is Nothing Then
Else
FoundCell.Select
ActiveCell.Interior.Color = 255
End If
Set FoundCell = Range("A1:A4").Find(What:="B社")
If FoundCell Is Nothing Then
Else
FoundCell.Select
ActiveCell.Interior.Color = 3537312
End If
Set FoundCell = Range("A1:A4").Find(What:="C社")
If FoundCell Is Nothing Then
Else
FoundCell.Select
ActiveCell.Interior.Color = 16763904
End If
Set FoundCell = Range("A1:A4").Find(What:="D社")
If FoundCell Is Nothing Then
Else
FoundCell.Select
ActiveCell.Interior.Color = 16764159
End If
End Sub
Sub 円グラフの色指定()
Dim i As Long
With ActiveChart.SeriesCollection(1)
Call 色設定
For i = 1 To .Points.Count
.Points(i).Interior.Color = Cells(i, 1).Interior.Color
Next i
End With
End Sub
マクロボタンは、クイックアクセスツールバーやタブに登録しておくと便利です。
以下の記事を参考にしてください。
-
自作のマクロをクイックアクセスツールバーやリボンに登録するには
Office2010では、リボンのカスタマイズができるようになりました。 Excelのマクロやアドインは、これまでクイックアクセスツールバー ...
参考円グラフのグラフ要素のみを並べ替える方法についても解説しています。
-
表はそのままでグラフの要素を降順(昇順)に並べ替えて表示するには
Excelでデータを基にグラフを作成すると、グラフの要素はデータと同じ順に並びます。 でも、表の並びはそのままにして、グラフの要素だけ降順に ...