Excel関数 逆引き集 | セル番地取得 → ADDRESS

Excel
スポンサーリンク

概要

「行番号と列番号からセル番地(A1、B3 など)を文字列として作りたい」
「=R[1]C[2] みたいな“位置情報”から $B$3 を生成したい」
「行・列を計算で求めて、その結果からセル番地を組み立てたい」

こういうときに使うのが ADDRESS 関数です。

ADDRESS は
行番号+列番号 → セル番地(文字列)
に変換してくれる関数です。
INDIRECT と組み合わせると「動的参照」にも発展できます。

ここでは、ADDRESS の基本から、よく使うテンプレート、例題までを、初心者向けにかみ砕いて解説します。


ADDRESS 関数の基本

書式の確認

ADDRESS の基本形はこうです。

=ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text])

必須なのは最初の2つです。

  • row_num:行番号(1,2,3,…)
  • column_num:列番号(1=A列、2=B列、3=C列…)

最低限これだけ指定すれば、
=ADDRESS(2,3) → 「$C$2」
のように、絶対参照のセル番地(文字列)が返ってきます。


基本パターン:行番号+列番号からセル番地を作る

例1:2行目・3列目 → $C

=ADDRESS(2,3)

結果:

$C$2

行番号 2、列番号 3(=C列)なので、「$C$2」という文字列が返ります。

例2:5行目・1列目 → $A

=ADDRESS(5,1)

結果:

$A$5

「行と列が決まっている → セル番地文字列がほしい」というときの基本中の基本です。


絶対参照・相対参照の切り替え(abs_num)

abs_num の意味

第3引数 abs_num で、参照の形式を指定できます。

1:$A$1 形式(行列とも絶対)※省略時のデフォルト
2:A$1  形式(列は相対、行は絶対)
3:$A1  形式(列は絶対、行は相対)
4:A1   形式(行列とも相対)

例:2行3列を相対参照で返したい

A1 形式(相対参照)で欲しいとき:

=ADDRESS(2,3,4)

結果:

C2

同じく、行だけ絶対・列は相対にしたいとき:

=ADDRESS(2,3,2)

結果:

C$2

列だけ絶対・行は相対にしたいとき:

=ADDRESS(2,3,3)

結果:

$C2

「コピペしたときにどこを固定したいか」に応じて、この abs_num を使い分けます。


A1形式/R1C1形式の切り替え(a1)

a1 引数の意味

第4引数 a1 には TRUE / FALSE を指定します。

  • TRUE または省略:A1 参照形式(A1、C5 など)
  • FALSE:R1C1 参照形式(R1C1、R5C3 など)

例:2行3列を R1C1 形式で欲しい

=ADDRESS(2,3,1,FALSE)

結果:

R2C3

R1C1 形式を使うことは多くありませんが、
マクロや一部の応用で「R×C×」形式が必要なときに使います。


シート名付きでセル番地を作る(sheet_text)

sheet_text 引数

第5引数にシート名を指定すると、
「シート名!セル番地」の形で返すことができます。

=ADDRESS(2,3,1,TRUE,"Sheet1")

結果:

Sheet1!$C$2

他シートを INDIRECT で参照したいときの元ネタとして使えます。


行番号・列番号を計算で求めてから ADDRESS する

例:指定セルと同じ行・隣の列を文字列で表す

A2 の「行番号」と「列番号+1」を使って、
「A2 の右隣のセル番地」を文字列として求めたいとします。

行番号は ROW、列番号は COLUMN で取れます。

=ADDRESS(ROW(A2), COLUMN(A2)+1)

A2 は 2行1列なので、COLUMN(A2)+1 → 2列(B列)、
結果:

$B$2

このように、ROW / COLUMN と組み合わせると、
「位置関係からセル番地文字列を動的に生成する」ことができます。


例:現在の行・固定列のセル番地を作る

例えば、
「今の行の、常に C 列のセル番地を文字列で欲しい」
という場合、行は ROW()、列は固定で 3 にします。

=ADDRESS(ROW(),3)

5 行目でこの式を使えば → $C$5
10 行目なら → $C$10

のように、行位置に応じて変わる番地文字列を作れます。


ADDRESS と INDIRECT を組み合わせて「動的参照」にする

ADDRESS は文字列を返す関数なので、
そのままでは「番地の文字」が得られるだけです。

それを実際に“セルとして参照”したいときは INDIRECT を組み合わせます。

例:行番号が A1、列番号が B1 に入っている場合

A1:2
B1:3

C1 に、A1/B1 で指定されたセルの中身を表示したいとき。

=INDIRECT(ADDRESS(A1,B1))

A1=2, B1=3 → ADDRESS(2,3) → “$C$2”
INDIRECT(“$C$2”) → C2 の値が返る、という流れです。

「行列を計算で求め → ADDRESS で文字列 → INDIRECT で参照」
この3ステップは、動的参照の定番パターンです。


問題1

2行目・3列目のセル番地を 絶対参照($C$2) の文字列で取得したいです。
ADDRESS を使った式を書いてください。

=ADDRESS(2,3)

問題2

5行目・1列目のセル番地を 相対参照(A5) の文字列で取得したいです。
ADDRESS の第3引数 abs_num を使って式を書いてください。

=ADDRESS(5,1,4)

問題3

2行目・3列目のセル番地を R1C1形式(R2C3) で文字列として取得したいです。
ADDRESS の第4引数 a1 を FALSE にして式を書いてください。

=ADDRESS(2,3,1,FALSE)

問題4

シート名「Sheet1」の 4行目・2列目のセル番地を
Sheet1!$B$4 という文字列で取得したいです。
ADDRESS の第5引数を使った式を書いてください。

=ADDRESS(4,2,1,TRUE,"Sheet1")

問題5

A2 の「1列右」のセル番地を文字列で取得したいです。
ROW と COLUMN を使い、ADDRESS でセル番地文字列を作る式を書いてください。

=ADDRESS(ROW(A2),COLUMN(A2)+1)

ADDRESS は

  • 行番号
  • 列番号
  • 絶対/相対
  • A1/R1C1
  • シート名

といった「位置情報」をまとめてセル番地文字列にしてくれる関数です。
ROW・COLUMN・INDIRECT などと組み合わせることで、
“動的なセル参照”や“参照ラベルの表示”など、応用範囲が一気に広がります。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました