Excel VBA 選択列の値が変わるごとに縞模様を付けるマクロ

Excel マクロ、VBA

スポンサーリンク

ブログ

分かりやすい名前を使った数式(構造化参照)

Excelの「テーブル」では、動画↓のように普通にセルをクリックし数式を入力していくだけで、タイトル行の文字を用いた分かりやすい計算式にすることができる。

上図のような表があるとして、A列(第1カテゴリ)の値が変わるごとに、セルに背景色を付けて色分けで見やすくしたい、ということはないだろうか。
↓のようなイメージだ。

このA列には、文字が昇順や降順で並んでいるという規則性などは全くないし、「研究」「イベント」といった文字が何回ずつ続くとかいう規則性も存在しない。

そういった規則や制約条件がない中、あくまで、<値が変わるごとに色を付ける>というだけのことがしたいのだ。

意外に難しい

これを、関数などExcelの一般機能で実現しようとすると、実は意外と難しくて一筋縄ではいかない。

強いてそれをやるなら、SUMPRODUCT関数とか小難しい関数を使うことになる。
SUMPRODUCT関数ってSUM関数みたいに数値の合計をする関数のはずだけど、一応そういう(どういう?)用途にも使える。

とはいっても私自身、そんな解法はスッと記述はできないし、やろうとも思わない。

理想は「条件付き書式」機能で、完全自動でA列の値が変わるごとに色が変わるようセットすることだ。
でもそれも、数式の設定とかが簡単ではないし、並べ替えとか行の削除とかにまで対応できるようにとか考えるとキリがない。

というわけで、Excelの標準機能でやろうとするとどうしても手間が掛かるばかりで見返りも少ないので、マクロでササッとやってしまうのが最良だと思う。

ソースコード

それでは、当該マクロのソースコードを書いてみる。

私はこのマクロを、個人用マクロブックに組み込んで使っている。

[su_spoiler title="個人用マクロブックとかについては、ここを展開。" style="fancy"]

オリジナルのマクロをリボンに追加する方法はこちら

個人用マクロブックについては、こちらこちらで述べています。

[/su_spoiler]

 

あんまり解説のしどころもないけど念のため一点だけ。

この例では値が変わるごとに青っぽい色にするようにしてるが、これを別の色にしたいなら
.Color = 16775147
の箇所の数字を、色々と変えてみると良い。

一応、動作イメージの動画も付けておきます。

スポンサーリンク