4/29/2023

Excel。VBA。平均値以上のセルがわかりやすいように手早く塗りつぶしたい【fill】

Excel。VBA。平均値以上のセルがわかりやすいように手早く塗りつぶしたい

<Excel VBA>

データを読み込んだあと、データが平均値以上かどうかを視覚的判断しやすいように塗りつぶしを設定したいとします。


このような場合、条件付き書式をつかえばいいかと考えますが、平均値以上というのは、数式をつかった条件付き書式をつくる必要があります。


そこで、Excel VBAをつかったプログラムだと、どうなるのでしょうか?


次の表を使って、確認してみましょう。


E列の合計値が平均以上ならば、赤色でセルを塗りつぶすようにしていきます。


Sub 平均値以上()

    With Range("e2:e8").FormatConditions

        .AddAboveAverage

        .Item(1).AboveBelow = xlEqualAboveAverage

        .Item(1).Interior.Color = RGB(255, 0, 0)

    End With

End Sub


まずは、実行してみましょう。


このように、合計値が平均以上ならば、赤色でセルを塗りつぶすことができました。


なお、平均値は、200.571 です。


では、プログラム文を確認しておきましょう。


With Range("e2:e8").FormatConditions~End With


With文をつかうことで、そのあとの構文を繰り返し入力する必要がありません。

可読性も向上しますし、入力する手間も省けます。


FormatConditionsオブジェクトは、条件付き書式を設定するオブジェクトです。



AddAboveAverageメソッドは、条件付き書式の「上位/下位ルール」にある「平均より上」の設定をします。


Item(1).AboveBelow = xlEqualAboveAverage

Item(1)は、条件付き書式の1件目という意味で、「xlEqualAboveAverage」をつかうことで、平均以上と設定することができます。


「Interior.Color = RGB(255, 0, 0)」

「Interior.Color」は、塗りつぶしの設定をします。RGB(255, 0, 0)で赤色を設定することができます。


条件付き書式で用意されている設定で、すぐに対応できるならば、Excel VBAでプログラム文をつくるよりも、手早く設定することができます。

ただし、今回のように、平均値以上などのような場合には、Excel VBAをつかってみるというのも、アリかもしれませんね。