ADDRESS関数の使い方|行・列からセル番地を作る・INDIRECTで値を取り出す・列の文字に変える

Excel ADDRESS関数の使い方|行・列からセル番地を作る(INDIRECTとの組み合わせ)

ADDRESS関数は、行番号と列番号から「$E$7」のようなセル番地を文字で作る関数です。「5行目・4列目のセル」のように位置を計算で求めたいとき、最大値がどのセルにあるかを知りたいとき、列番号を「AB」のような列の文字に直したいときに使います。

注意したいのは、ADDRESS が返すのは番地の文字だけで、そのセルの値ではないことです。値を取り出すには INDIRECT 関数と組み合わせます。この記事では、書き方と引数の違い、INDIRECT との組み合わせ、よく使う場面、エラーになるときの直し方まで、実際の Excel の画面で説明します。

式の書き方
数式=ADDRESS(行番号, 列番号, [参照の種類], [参照形式], [シート名])
練習用Excelファイル(無料ダウンロード)
「九九表」「引数の違い」「使い道」「よくある間違い」の4シートです。「九九表」「引数の違い」は記事内のツールと同じ表です。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

ADDRESS関数の書き方(構文)

=ADDRESS(行番号, 列番号, [参照の種類], [参照形式], [シート名])
引数意味
行番号何行目か(1 以上)
列番号何列目か(1 以上。A 列が 1、B 列が 2)
参照の種類(省略可)1=$B$1(絶対参照)、2=B$1(行だけ絶対)、3=$B1(列だけ絶対)、4=B1(相対参照)。省略すると 1
参照形式(省略可)TRUE または省略で A1 形式、FALSE で R1C1 形式
シート名(省略可)指定すると「Sheet2!$B$1」のようにシート名つきになる

ADDRESS はどのバージョンの Excel でも使えます。

基本の使い方:九九表の答えのセルを探す

九九表(B3:J11)から、かけられる数(A14)とかける数(D14)の位置にあるセルの番地を作り、その値を取り出します。九九表は 3 行目・B 列から始まるので、行番号は「かけられる数 + 2」、列番号は「かける数 + 1」です。

=ADDRESS(A14+2,D14+1)
エクセルのADDRESS関数で九九表の位置からセル番地を作りINDIRECT関数で答えを取り出した例
エクセルのADDRESS関数で九九表の位置からセル番地を作りINDIRECT関数で答えを取り出した例

5 と 4 なら 7 行目・5 列目なので、G14 は $E$7 になりました(②)。この番地の値を J14 の =INDIRECT(G14) で取り出すと、5×4 の答え 20 です(③)。7 と 8 にすると $I$9 と 56 になりました(INDIRECT関数の使い方)。

まず動かしてみよう|この記事のサンプルをその場で試せます

ブラウザの上で ADDRESS 関数を試せます。「ADDRESS(練習ファイル)」は九九表の中から、かけられる数(A14)とかける数(D14)の位置のセル番地を作り(G14)、INDIRECT でその答えを取り出します(J14)。「ADDRESS(引数の違い)」では3〜5つ目の引数による違いを確かめられます。練習用ファイルの「九九表」「引数の違い」シートと同じ表です。

3〜5つ目の引数で番地の形を変える

エクセルのADDRESS関数で参照の種類・R1C1形式・シート名つきの番地を作った例
エクセルのADDRESS関数で参照の種類・R1C1形式・シート名つきの番地を作った例
式結果
=ADDRESS(1,2)$B$1
=ADDRESS(1,2,2)B$1
=ADDRESS(1,2,3)$B1
=ADDRESS(1,2,4)B1
=ADDRESS(1,2,1,FALSE)R1C2
=ADDRESS(1,2,1,TRUE,"Sheet2")Sheet2!$B$1

3つ目で $ の付き方が変わり(①)、4つ目を FALSE にすると R1C1 形式(②)、5つ目にシート名を入れるとシート名つきの番地になりました(③)。ふつうは省略して $B$1 の形で使います。

ADDRESS関数のよく使う場面

エクセルのADDRESS関数で最高点のセル番地や列番号を列の文字に変えた例
エクセルのADDRESS関数で最高点のセル番地や列番号を列の文字に変えた例
やりたいこと式結果
最高点がどのセルか知る=ADDRESS(MATCH(MAX(B2:B6),B2:B6,0)+1,2)$B$4
列番号を列の文字に変える=SUBSTITUTE(ADDRESS(1,28,4),"1","")AB
最後のデータのセル番地=ADDRESS(COUNTA(A:A),1,4)A6
範囲の番地を作る=ADDRESS(2,1,4)&":"&ADDRESS(6,2,4)A2:B6

MATCH で最高点(95)が何番目かを調べ、見出しの1行分を足して行番号にすると、セル番地 $B$4 が分かりました(①)。28 列目は「AB1」から「1」を消して AB です(②)。作った範囲の番地を INDIRECT に渡すと、=SUM(INDIRECT(ADDRESS(3,2)&":"&ADDRESS(3,10))) で九九表の1の段の合計 45 のように、計算した範囲を集計できます。

よくある間違い

エクセルのADDRESS関数は番地の文字を返すため足し算するとVALUEエラーになる例
エクセルのADDRESS関数は番地の文字を返すため足し算するとVALUEエラーになる例
症状考えられる原因対処
値ではなく「$A$2」と表示されるADDRESS は番地の文字を返す関数INDIRECT で囲んで値を取り出す。
#VALUE! になるADDRESS の結果に足し算した/列番号が 0値は INDIRECT で取り出してから計算する。行・列は 1 以上にする。
#VALUE! になる列番号が 16,385 以上・行番号が 1,048,577 以上Excel の最大(XFD 列・1,048,576 行)を超えないようにする。
シート名が違って #REF!INDIRECT に渡した番地のシートが無いシート名のつづりを確かめる。

試したところ、=ADDRESS(2,1)+1 と列番号 0 は #VALUE! でした(③)。=ADDRESS(1,16384) は $XFD$1 で、16385 列目は #VALUE! です。

よくある質問

逆に、セルから行番号・列番号を求めるには?

ROW 関数・COLUMN 関数を使います(COLUMN関数の使い方)。

値で探したセルの番地を知る別の方法は?

CELL 関数でも番地が分かります。=CELL("address",INDEX(B3:J11,5,4)) は $E$7 で、ADDRESS の結果と同じでした。

INDIRECT を使わずに位置で値を取り出せますか?

INDEX 関数なら、番地の文字を作らずに行と列の位置で値を取り出せます。=INDEX(B3:J11,5,4) は 20 です。INDIRECT はシートを変更するたびに計算し直すので、大きな表では INDEX のほうが軽くなります。

練習用Excelファイル(無料ダウンロード)
この記事の例がすべて入った練習用のファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:参照の関数の関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次