VBA17_Tips小技【セルの自動色分け】

こんにちは! ただいま出張中のBenです。今日は早速VBAのTipsということで、小技級から条件によってセルの背景を変えるのをやってみたいと思います。

Benは本職がIT関係でもなくただの自然科学系の研究者です。作物とかの育ちが悪いと、気温が低いとか日射が少ないとかで原因を究明する必要があります。普通の会社員でも、売り上げが思わしくないときは、天候もありますし、景気やライバル店など様々な影響があるでしょう。そんな中、影響する要素を、プラスだったら赤、マイナスだったら青、普通だったら緑で色塗りすると視覚的に一瞬で影響度を把握することができます。

20151119a.gif
Benがよく扱う気温でたとえます。御覧のようにA列の時系列ごとにB列が今年の観測値、C列がいつもの平年値、D列が平年との差です。

Sub Irowake()
  Dim i As Single
  i = 3 'データは3行目から始まるから初期値は3
  Do Until IsEmpty(Cells(i, 4)) '4列目=D列(平年差)で判定します
    If Cells(i, 4) >= 1 Then '平年差が+1以上のとき
        Cells(i, 4).Interior.Color = RGB(255, 200, 200) '赤
    ElseIf Cells(i, 4) <= -1 Then '平年差が-1以下のとき
        Cells(i, 4).Interior.Color = RGB(200, 200, 255) '青
    Else 'どちらでもない(±1未満のとき)
        Cells(i, 4).Interior.Color = RGB(200, 255, 200) '緑
    End If
    i = i + 1
  Loop
End Sub
コードの中でInterior.Colorは背景色を指定するプロパティです。Colorオブジェクトで指定するので、RGB関数というものを使用しています。難しいことを抜きにするとRGB括弧の中に数字が3つありますが、RGB(Red,Green,Blue)のとおり、1番目が赤、2番目が緑、3番目が青の光の三原色でそれらをそれぞれ0~255の範囲で指定します。光の足し算なので(0,0,0)で黒、(255,255,255)で白になります。青だけMAXの255にして、他のを200などに少し落とすと、薄い青になります。

20151119c.gif
そして、このコードを実行すると、御覧のように平年より高い気温は赤、低いのは青、同じくらいのは緑で色分けされます。前半は赤が多いので気温高かったんだ! 後半は同じくらいだったので総じて平年並みかな。といううのを視覚的に瞬時に把握できます。

20151119d.gif
実はこのくらいの色分けだったらExcelだけでも「条件付き書式」という機能を使うとできます。図のように条件とそれに合致したときの書式(今回は背景色)を条件の個数だけ設定すれば同様になります。プログラミングを伴わないので簡単な半面、セル範囲で適用するので絶対参照と相対参照の設定次第でコピペでうまくいかないときもあったりします。

色分けのマクロはシンプルですが、少し応用をくわえると毎月同じ作業を行わなければならないときなどに結構重宝しています。今後はさらに実践的なものをノートしていきたいと思います。

この記事へのコメント


この記事へのトラックバック