セルの値が変わったら罫線を引いて明示

Excelシートに縦列に複数のデータを入力した場合、その値が異なる部分を明示したいことがあります。分かりやすくなる方法の1つとして罫線を引くことが挙げられます。

データ量が少なければ手で罫線を引いてもいいかもしれませんが、テキストファイルなどから大量のデータをコピペした場合などは大変な作業になるためVBAを使った方がいいと思います。

ここでは、縦に並べて入力されている値が変わった場合に、罫線を引いてデータが異なっていることを明示するマクロを紹介します。

セルの値が変わったときに罫線を引くマクロ

A1セルから下に向かって値が異なるセルがあった場合は境目に罫線を引くマクロです。

 

コード説明

7行目 シートのグリッド線を消しています。不要であれば削除してください。
10行目 データの比較を行う開始セルを指定します。A1セルを固定にしていますが、任意のセルを開始位置にしたい場合は、この関数の引数に開始セルのRangeオブジェクトを指定するようにするとより汎用的になります。
12行目 ループカウンタを0で初期化しています。Offsetプロパティで開始セルから始めるために0としています。
16行目 前回セルの値として現在セル値変数をコピーしています。前回ループ時の値がセットされます。
19行目 A1セルを基準としたOffsetプロパティによるi行目のセルの値を取得しています。
22行目 前回と現在がどちらも空白セルの場合は以降はデータがないとみなして処理を終了しています。もし空白セルが連続することがある場合は、別の変数で空白セルが100まで許容可能とするための判定用のカウンター変数などを用意し、それも終了条件の判定にAnd条件で加えるのもいいと思います。
23行目 22行目の判定でループ処理を抜けます。
27行目 前回と現在のセルの値が異なるかどうかの判定を行っています。
29行目 前回と現在のセルの値が異なっている場合は、現在セルの上に細実線を引いています。色を付けたい場合や太線にしたい場合などは以下に詳しく紹介していますので参考にしてください。

セルの罫線の取得と設定
セルの罫線の種類の取得と設定
セルの罫線の太さの取得と設定
セルの罫線の色の取得と設定
セルの罫線を消す

33行目 次ループ用にループカウンタを加算しています。

 

利用例

実行前

実行後