2015年7月4日土曜日

エクセルでセルの参照元に色をつけるマクロ

参照セルに色を付けるマクロを作りました。
数式トレースに役立ちます。
コード自体は最下段に記載しています。

■概要
例えば、下記の表では、左の表は商品名のリストで、右側はその分類結果になっています。
ただし、集計方法が謎であり、集計方法をトレースする必要があります。
そこで、対象セルとその参照元のセルに同じ色をつけれるようにしました。


(1.元の数表)
(2.実行結果)
 対象セル(好きセル)に黄色く着色してから(手動)から、マクロ実行結果。
 対象セルと同じ色が、参照元のセルにつく。
 他のセルも同様に実行。
(3.(参考)動作確認結果)
 参照元のトレース機能で、対象セルと参照元の色が一致していることを確認。


■マクロのメリット

通常の参照式のトレース方法

数式(参照元)確認の方法では、下記二択かと思います。
  1. F2を押して数式表示させ、その枠を見に行く
  2. リボン-数式-参照元のトレース で矢印を引く

しかし、1では1セルしか参照できず、印刷もできません。











一方で、2は複数セル適用可能、印刷可能になります。
ただし、矢印だとかなり入り組んでしまい見づらいです。

















これらに対して、セルに着色であれば、直感的にも理解しやすいと思います。

■マクロのデメリット
  1. 元々の数表に着色されていると、それを上書きしてしまう。
  2. 対象セルを自分で色付けしなくてはいけない。
    →対象セルを適当なグラデーションに自動設定して上げたほうが楽。
  3. 対象セルが複数ある場合、都度実行する必要がある。
1は、この機能のそもそもなので困っちゃういますが、分析用で別ブックやシートを作成して作業すれば解決できるかと思います。

2は、シンプルなマクロにしたかったので割愛しました。
エクセルテーマで設定される、色を順次適用するようにすればいい感じになるはず。

3も、シンプルなマクロにしたかったので割愛しました。
Selectionを使って、本処理の前に対象セル元を保持させて、対象セル一覧に対してループで実行すれば解決するはず。
(Selection自体は、本処理で使用しているので、別でデータ保持が必要)

■今後
2,3も拡充したいとは思っています。

■マクロ本体
Sub セルトレース()

    '選択セルを記憶する
    Dim addr As String
    addr = Selection.Address

    '選択セルの背景色取得
    Dim myR, myG, myB As Long
    Dim t As Long
    t = Selection.Interior.Color
    myR = t Mod 256
    myG = Int(t / 256) Mod 256
    myB = Int(t / 256 / 256)
    
    '選択セルの参照元を選択
    Selection.Precedents.Select
    
    '選択セルに対して色を塗る
    Dim c As Object
    For Each c In Selection
        c.Interior.Color = RGB(myR, myG, myB)
    Next
    
    '初期のセルに戻る
    Range(addr).Select
    
End Sub

どうぞ、お試しくださいませ。

0 件のコメント:

コメントを投稿