参照セルに色を付けるマクロを作りました。
数式トレースに役立ちます。
コード自体は最下段に記載しています。
■概要
例えば、下記の表では、左の表は商品名のリストで、右側はその分類結果になっています。
ただし、集計方法が謎であり、集計方法をトレースする必要があります。
そこで、対象セルとその参照元のセルに同じ色をつけれるようにしました。
(2.実行結果)
対象セル(好きセル)に黄色く着色してから(手動)から、マクロ実行結果。
対象セルと同じ色が、参照元のセルにつく。
他のセルも同様に実行。
(3.(参考)動作確認結果)
参照元のトレース機能で、対象セルと参照元の色が一致していることを確認。
■マクロのメリット
通常の参照式のトレース方法
数式(参照元)確認の方法では、下記二択かと思います。
- F2を押して数式表示させ、その枠を見に行く
- リボン-数式-参照元のトレース で矢印を引く
しかし、1では1セルしか参照できず、印刷もできません。
一方で、2は複数セル適用可能、印刷可能になります。
ただし、矢印だとかなり入り組んでしまい見づらいです。
これらに対して、セルに着色であれば、直感的にも理解しやすいと思います。
■マクロのデメリット
- 元々の数表に着色されていると、それを上書きしてしまう。
- 対象セルを自分で色付けしなくてはいけない。
→対象セルを適当なグラデーションに自動設定して上げたほうが楽。
- 対象セルが複数ある場合、都度実行する必要がある。
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
どうぞ、お試しくださいませ。