2/26/2019

Excel。マクロ042。条件付き書式で平均以上を塗りつぶすのはマクロが便利【Conditional formatting】

Excel。マクロ042。条件付き書式で平均以上を塗りつぶすのはマクロが便利

<Excel VBA & 条件付き書式>

繰り返しの処理や、大量のデータを処理するときに、マクロ(Excel VBA)を使って処理することで時短することができたりしますが、大した処理でもないけれど、実はマクロを作って処理させるほうが、面倒じゃなくなって楽になるというものもあります。

今回はその中のひとつ。
条件付き書式の平均”以上”のセルに塗りつぶしを設定するというのをやっていきます。

【条件付き書式で平均以上】

まずは、条件付き書式の平均以上でセルを塗りつぶす処理を確認してみましょう。
次のデータを使っていきます。

23行目の平均の行は、平均以上なのかを確認するためのもので、今回はこのセルを使って”以上”を設定することはしません。

では、C2:C21を範囲選択して、ホームタブの条件付き書式から「上位/下位ルール」にある「平均より上」をクリックすることで、設定することができます。

ところで、今回は『平均以上』でしたよね。

ここが今回のポイント。

平均より上、つまり”平均より大きい”は、用意されているのですが、”以上”は条件を編集する必要が発生するわけですね。

平均より上ダイアログボックスが表示されたら、あとは書式を設定すると、平均より上に該当するデータのセルを塗りつぶししてくれます。

その後、『平均以上』にするために、条件付き書式の「ルールの管理」をクリックして、

条件付き書式ルールの管理ダイアログボックスが表示されますので、「ルールの編集」をクリックして、書式ルールの編集ダイアログボックスを表示します。

選択範囲の平均値を”以上”に変更して、『平均以上』にすることができます。

もう一つのやり方は、条件付き書式の「新しいルール」をクリックして作ることもできますが、AVERAGE関数を手入力する必要がありますので、面倒です。

設定と編集を繰り返して、『平均以上』で条件付き書式を設定することができましたが、なかなか面倒です。

【Excel VBAでつくってみる】

そこで、Excel VBAで条件付き書式のマクロをつくっていきましょう。
Sub 平均以上()
    With Range("d2:d21").FormatConditions
        .AddAboveAverage
        .Item(1).AboveBelow = xlEqualAboveAverage
        .Item(1).Interior.Color = RGB(255, 0, 0)
    End With
End Sub

これだけで、できちゃいました。では実行して確認してみましょう。

では、説明しておきましょう。
With Range("d2:d21").FormatConditions~End With
なんども、Range("d2:d21").FormatConditionsと書くのが面倒なので、Withを使いました。
FormatConditionsオブジェクトで条件付き書式を設定することができます。

AddAboveAverageメソッドは、「上位/下位ルール」の「平均より上」の設定をするところです。

Item(1).AboveBelow = xlEqualAboveAverage
Item(1)は、条件付き書式の1つ目という意味。で、
xlEqualAboveAverageは、平均以上という意味です。

ちなみに、
xlAboveAverageだと平均より上という意味になります。

つまり、Excel VBAでは、平均以上が用意されているわけです。

だったら、Excelにもリボンに入れておいてほしいものですね。

Item(1).Interior.Color = RGB(255, 0, 0)
書式の設定ですね。Interior.Colorは、塗りつぶしですね。

そして、RGB(255, 0, 0)は、赤色を意味します。

このように、リボンだけでは、設定が面倒なものもマクロにすることで作業効率が改善することができるものもありますので、色々知っているといいかもしれませんね。