
ExcelやGoogleスプレッドシートで、特定の値が入力されているセルの位置を取得する方法をご紹介します。MATCH関数を使って、範囲内の相対的なセル番地を取得する方法や、CELL関数を使って、セル番地を文字列で取得する方法についても解説しているので、ぜひ参考にしてみてください。
セルの行番号や列番号を取得する(ROW・COLUMN関数)
行番号を取得する(ROW関数)

ROW関数は、指定したセルの行番号を返します。
例:=ROW(A4)
A4セルは4行目にあるため、4が返されます。
もし、セル参照を省略すると、数式を入力したセルの行番号を返します。
列番号を取得する(COLUMN関数)

COLUMN関数は、指定したセルの列番号を返します。
例:=COLUMN(A4)
A4セルは1番目の列にあるため、1が返されます。
もし、セル参照を省略すると、数式を入力したセルの列番号を返します
行番号と列番号からセル番地を取得する(ADDRESS関数)

ADDRESS関数は、指定した行番号と列番号に対応するセルの番地を、文字列で返します。
例:=ADDRESS(ROW(A4),COLUMN(A4),4)
ROW(A4)で4、COLUMN(A4)で1が返されるため、この数式は4行目、1列目にあるセルの番地A4を返します。
ADDRESS関数の引数:(行, 列, [絶対相対モード], [A1表記の使用], [シート])
数式のポイント
第3引数「絶対相対モード」には、セル参照の種類を指定します。もし、この引数を省略すると、1(絶対参照)が返されます。
1:絶対参照(例:$A$1)4:相対参照(例:A1)
自分のセル番地を取得する

数式を入力した自身のセル番地を取得したい場合、以下の数式を入力します。
例:=ADDRESS(ROW(),COLUMN(),4)
ROW()とCOLUMN()は、引数を省略すると数式が入力されたセルの行番号や列番号を返すため、簡単に自身のセル番地を取得できます。
特定の値の相対的な位置を取得する(MATCH関数)

MATCH関数は、指定した範囲の中で、検索値が何番目にあるかを返します。
たとえば、A2:A5の範囲から、「みかん」が何番目にあるかを検索したい場合、数式は次のようになります。
例:=MATCH(C2,A2:A5,0)
この数式は、A2を先頭として数え、3番目にある「みかん」の位置3を返します。
MATCH関数の引数:(検査値, 検査範囲, [照合の型])
数式のポイント
第3引数「検索の種類」には、完全一致する値だけ検索する0を指定します。
特定の値のセル番地を取得する(CELL関数)

CELL関数は、指定したセルの位置や書式といった情報を返します。
たとえば、A2:A5の範囲にある「みかん」のセル番地を調べたい場合、数式は次のようになります。
例:=CELL("address",INDEX(A2:A5,MATCH(C2,A2:A5,0)))
CELL関数の引数:(情報の種類, [参照])
数式のポイント
- 第1引数「情報の種類」: 取得したい情報の種類に、セル参照の文字列を返す
"address"を指定します。 - 第2引数「参照」: 情報を取得したいセルを指定します。
- MATCH関数が、
A2:A5の範囲にある「みかん」の位置を検索します。 - INDEX関数は、MATCH関数の結果(3番目)を行番号として、3行目の値(
みかん)が入力されているセルを返します。
- MATCH関数が、
セル番地を相対参照で取り出す

もし、セル番地から$を消して相対参照にしたい場合、次のようにSUBSTITUTE関数を組み合わせます。
例:=SUBSTITUTE(CELL("address",INDEX(A2:A5,MATCH(C2,A2:A5,0))),"$","")
この数式では、CELL関数が返す$A$4という文字列から、すべての$を空白""に置き換えています。その結果、相対参照のA4が返されます。
SUBSTITUTE関数の引数:(検索対象のテキスト, 検索文字列, 置換文字列, [出現回数])