「表があったとして,
その各列ごとに
各列の平均以上のものに,色(例えば灰色)をセルに塗る.」
というのはどのようにかくのでしょうか?
できれば,どんな列数,行数が来ても
良いようにしたいです.
(行列は左上につめて入力してあります)
あ、先の回答は 行単位でした。
列単位に変更しました。
A列の中で 平均を出し、対象となるセルは 水色で ならなかったら
塗りつぶしなしにしています。
選択した範囲で 実行するように修正しました。
Sub Macro1() ' ' Macro1 Macro ' a1 = Selection.Row '開始行 a2 = a1 + Selection.Rows.Count - 1 '終了行 a3 = Selection.Column '開始列 a4 = a3 + Selection.Columns.Count - 1 '終了列 For a = a3 To a4 aa = 0 ab = 0 For b = a1 To a2 If Cells(b, a) > 0 Then aa = aa + Cells(b, a) ab = ab + 1 End If Next b c = 0 If ab > 0 Then c = aa / ab End If For b = a1 To a2 If Cells(b, a) > c Then With Cells(b, a).Interior .ColorIndex = 34 .Pattern = xlSolid End With Else Cells(b, a).Interior.ColorIndex = xlNone End If Next b Next a End Sub
条件付書式を使います。
A列全体を選択して
セルの値が 次の値より大きい =AVERAGE(A:A)
として書式で灰色にします。
次にB列以降にA列をコピーします。
Sub Macro1() ' ' Macro1 Macro ' a1 = 1 '開始行 a2 = 5 '終了行 a3 = 1 '開始列 a4 = 10 '終了列 For a = a1 To a2 aa = 0 ab = 0 For b = a3 To a4 If Cells(a, b) > 0 Then aa = aa + Cells(a, b) ab = ab + 1 End If Next b If ab > 0 Then c = aa / ab For b = a3 To a4 If Cells(a, b) > c Then With Cells(a, b).Interior .ColorIndex = 34 .Pattern = xlSolid End With Else Cells(a, b).Interior.ColorIndex = xlNone End If Next b End If Next a End Sub
表のサイズは
a1 = 1 '開始行
a2 = 5 '終了行
a3 = 1 '開始列
a4 = 10 '終了列
を変更してください。
ありがとうございます.
表のサイズの部分を,
変更せずとも認識できるようにしたいのですが,
可能でしょうか?
あ、先の回答は 行単位でした。
列単位に変更しました。
A列の中で 平均を出し、対象となるセルは 水色で ならなかったら
塗りつぶしなしにしています。
選択した範囲で 実行するように修正しました。
Sub Macro1() ' ' Macro1 Macro ' a1 = Selection.Row '開始行 a2 = a1 + Selection.Rows.Count - 1 '終了行 a3 = Selection.Column '開始列 a4 = a3 + Selection.Columns.Count - 1 '終了列 For a = a3 To a4 aa = 0 ab = 0 For b = a1 To a2 If Cells(b, a) > 0 Then aa = aa + Cells(b, a) ab = ab + 1 End If Next b c = 0 If ab > 0 Then c = aa / ab End If For b = a1 To a2 If Cells(b, a) > c Then With Cells(b, a).Interior .ColorIndex = 34 .Pattern = xlSolid End With Else Cells(b, a).Interior.ColorIndex = xlNone End If Next b Next a End Sub
すばらしいです.ありがとうございます.
VBAを使用するよりエクセルの機能を活用してはどうでしょうか?
VBAとエクセル標準機能はお互いの良い部分を共存させるのが良いかと。
そうですね,ありがとうございます.
どんな列数,行数が来ても使えるようにすると汎用性が高いだと思ったので^^;
すばらしいです.ありがとうございます.