セル位置の比較

事務処理のようなマクロの場合にはあまり必要性は感じませんが、シート内にあるデータの検証のような機械的にシート内の入力セル範囲をループしたりする場合に、起点となるセルと現在ループ中のセルの位置はどちらが上下左右にあるか、ということを知りたい場合があります。

例えば、A1セルとD5セルではD5セルの方がより下側にある、とかを知りたい場合です。


2つのセルの比較方法

2つのセルの位置を比較するには、いくつかの方法があります。

Addressプロパティを使って、”A1″形式や”R1C1″形式でのセル座標を使う方法や、RowプロパティやColumnプロパティで行位置、列位置を使う方法が挙げられます。

ここでは上下左右の位置関係の比較になるため、Row、Columnプロパティを利用します。


2つのセルを比較するコード

以下の関数は引数で渡された2つのセルの座標を比較し、第一引数より第二引数の方がより右下にあれば1を返し、同じ位置であれば0を返し、より左上にあれば-1を返します。

戻り値が同じIf文は当然統合できるのですが、わかりやすさを優先してわざと分けてます。



使い方

B2セルを第一引数として、第二引数の位置を変えながら上の関数の結果を出力するサンプルです。

実行結果
1
1
0
-1
-1