条件付き書式で濃淡をつける
業務で、ある数値を管理している。
予定された大きさがあって、そのとおりであれば「1」(=100%)となる。
1を超えた、つまり予定をオーバーしているものは要監視対象として、セルに色を付けて対応していた。
今までは、とにかく1を超えれば色が付くという〇か×かの見せ方で、どうにも味気なかった。そこで今回、1を超えた程度によって、色を濃くすることに挑戦した。
パレットのテーマカラーを見ると、上下で少しずつ色が濃くなっていくよう配置されている。
マクロの記録で確認すると、この部分が関係していることが分かる。
※値が小さいほど濃くなる。マイナス値も可。プロパティの最大値は「1」。
Selection.Interior.TintAndShade = 0.6
そこで、値が1を超えたところから、超え具合に比例して色も濃くなるようにしてみた。細かく設定するのは面倒なので、ループで処理してみよう。
Sub hoge() Dim FC As Excel.FormatConditions Set FC = Range("A1:J10").FormatConditions Dim i As Double For i = 0.1 To 1 Step 0.1 FC.Add Type:=1, Operator:=5, Formula1:="=" & 1 + i FC(FC.Count).SetFirstPriority FC(1).Interior.ThemeColor = xlThemeColorAccent2 FC(1).Interior.TintAndShade = 1 - i Next End Sub
A1からJ10の範囲で、条件付き書式を設定した。設定した時点では、見た目は未だ何も起きていない。
しかし実際は、このように細かい設定が追加されている。
次いで、テスト用のマクロがコチラ。
先ほど条件付き書式を設定した範囲に、1以上2未満の数値を入力してみる。
Sub abe_shi() Dim r As Range For Each r In Range("A1:J10") r = 1 + Rnd ' 乱数 Next Range("A1:J10").NumberFormatLocal = "0.0" End Sub
結果はこちら。
超過具合が濃淡で表され、今までよりも直感的に把握できるようになった。
早速明日、業務用ツールに組み込むとしよう。
※広い範囲で条件付き書式を用いると、極端に処理速度が遅くなる場合が
ありますので、ご注意ください。
参考まで。