重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【終了しました】教えて!gooアプリ版

エクセル(2007)で3D棒グラフを作りたいのですが、特定の値だけ色を変えたい場合はどうやればいいのでしょうか?
例えば、次のような4×4のデータがあったとします。
  1 2  3  4
1 12 33 33 84
2 21 12 48 53
3 35 50 62 31
4 41 42 43 24

この時に各列の最大値だけ色を変えて棒グラフを表示させたいのです(他の値は同じ色)。具体的には、
1列目の41の色を変える
2列目の50の色を変える
3列目の62の色を変える
4列目の84の色を変える
ということがやりたいのです。

棒グラフを直接クリックして書式設定で色を変える方法しかないのでしょうか?データが多く、1個づつこのやり方をするのは時間がかかりすぎます。

大変困っております、どうかよいやり方を教えて下さい。

A 回答 (2件)

グラフを選択してから下記VBAを実行してください。



Dim ser As Series
Dim v As Variant
Dim maxv As Variant
Dim i As Integer

For Each ser In ActiveChart.SeriesCollection
v = ser.Values
maxv = WorksheetFunction.Max(v)
ser.Interior.ColorIndex = ser.Interior.ColorIndex
For i = LBound(v) To UBound(v)
If v(i) = maxv Then
ser.Points(i).Interior.ColorIndex = 6
End If
Next i
Next
    • good
    • 0
この回答へのお礼

プログラムまだ載せていただいてありがとうございます。
実行してみたところ、思っていたような結果になりましたが、何ヶ所か最大値ではないのにグラフの色が変わってしまっているところがありました。なぜでしょうか?

お礼日時:2010/02/13 12:00

>何ヶ所か最大値ではないのにグラフの色が変わってしまっているところがありました。


>なぜでしょうか?
salty_saltさんと、全く同じ環境でテストできないので、解りません。
ご自分でデバッグして原因を突き止めてください。
あるいは、実際の環境はどうなっているか、具体的に教えてください。

試しに、先のコードでIf文を下記に変えてみてください。
実行時に対象要素が選択され、値がメッセージ表示されます。
合っているかどうか確認できます。

If v(i) = maxv Then
ser.Points(i).Select
Application.ScreenUpdating = True
MsgBox v(i)
ser.Points(i).Interior.ColorIndex = 6
End If
    • good
    • 0
この回答へのお礼

すいません、最初のプログラムでうまくいってました。
勘違いしてたみたいです。
丁寧に教えて下さって本当にありがとうございました。

お礼日時:2010/02/13 16:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!