INDIRECT関数:文字列形式で指定した位置にあるセルの参照を取得する

広告

INDIRECT 関数は Excel で用意されている関数の一つで、文字列で記述された位置にあるセルへの参照を取得します。ここでは Excel における INDIRECT 関数の使い方について解説します。

(2021 年 10 月 06 日公開 / 2021 年 10 月 06 日更新)

INDIRECT関数の使い方

INDIRECT 関数は文字列で記述された位置にあるセルへの参照を取得します。

INDIRECT(参照文字列,参照形式)

1 番目の引数に参照先のセルの位置を文字列で指定します。セルの位置は A1 形式(例えば B10 など)または R1C1 形式(例えば R2C3)のどちらかで文字列で指定します。

2 番目の引数は 1 番目の引数で指定した文字列が A1 形式なのか R1C1 形式なのかを指定します。 省略または TRUE を指定した場合は A1 形式、 FALSE を指定した場合は R1C1 形式で書かれたものとして処理されます。

例えば 1 番目の引数に文字列で "D2" と指定した場合、 D2 セルへの参照が返されます。

=INDIRECT("D2")

INDIRECT関数のサンプル(1)

INDIRECT関数のサンプル(2)

また 1 番目の引数に文字列ではなく B6 と指定した場合、 B6 セルに入力されている文字列で記述されてセルへの参照が返されます。例えば B6 セルに文字列で "B4" と入力されていれば B4 セルへの参照が返されます。

=INDIRECT(B6)

INDIRECT関数のサンプル(3)

INDIRECT関数のサンプル(4)

B6 セルに入力されている文字列を "B3" に変更すると、 B8 セルに入力された INDIRECT 関数が返すセルへの参照は B4 セルへ参照から B3 セルへの参照に変更されます。

INDIRECT関数のサンプル(5)

INDIRECT関数のサンプル(6)

このように INDIRECT 関数を使用することで、関数を書き換えなくても関数が返す参照先のセルを変更することができます。

R1C1形式で指定する

Excel ではセルの位置を指定する場合に A1 形式と R1C1 形式が用意されています。 A1 形式では行数を数値で指定し、列数をA,B,..とアルファベットで指定します。それに対して R1C1 形式では行数を R のあとに数値で指定し、列数を C のあとに数値で指定します。

例えば A1 形式で C2 セルは、 R1C1 形式では R[2]C[3] (相対参照の場合、絶対参照の場合は R2C3 ) と記述します。

なお Excel はデフォルトで A1 形式で表示されていますが、 Excel のオプション設定画面で「数式」の項目の中にある「R1C1参照形式を使用する」にチェックをすることで R1C1 形式に変更することができます。

INDIRECT関数のサンプル(7)

INDIRECT関数のサンプル(8)

セルの位置を文字列で表す場合、 Excel そのものを R1C1 形式に変更しておく必要はありません。セルの位置を R1C1 形式で文字列で指定し、 2 番目の引数に FALSE を指定するだけです。

例えば 1 番目の引数に文字列で "R2C4" と指定した場合、 D2 セルへの参照が返されます。

=INDIRECT("R2C4",FALSE)

INDIRECT関数のサンプル(9)

INDIRECT関数のサンプル(10)

名前を付けたセル範囲の名前を文字列で指定する

Excel ではセル範囲に対して名前を付けることができますが、 INDIRECT 関数の引数にセル範囲に付けた名前を文字列で指定することで、対応するセル範囲への参照を取得することができます。

例えば次のように Excel にデータを入力したとします。

INDIRECT関数のサンプル(11)

B3:E3 のセル範囲に対して "算数" という名前を付けます。 B3:E3 を選択した上で、画面左上に "算数" と入力してください。

INDIRECT関数のサンプル(12)

B7 セルに対して次のように INDIRECT 関数を入力し、引数に先ほどセル範囲に対して付けた名前である "算数" を指定します。すると、"算数"が付けられたセル範囲への参照が戻り値として返されます。

=INDIRECT("算数")

INDIRECT関数のサンプル(13)

INDIRECT関数のサンプル(14)

このように INDIRECT 関数では、セルの位置を文字列で引数に指定できるほかに、セル範囲に対して付けられた名前を文字列で引数に指定することができます。

INDIRECT関数のサンプル

それでは実際に INDIRECT 関数を使ってみます。 Excel のシートに対象の数値を次のように入力しました。

INDIRECT関数のサンプル(1)

D9 セルを選択し、 INDIRECT 関数を入力しました。 1 番目の引数に対象のセルの位置を文字列で指定するため、行については D7 セルに入力した数値に 2 を加え、 R1C1 形式で指定するため先頭に "R" を付けます。また列については D8 セルに入力した数値に 2 を加え、 R1C1 形式で指定するため先頭に "C" を付けます。これらを文字列として結合するため & 演算子を使って "R"&D7+2&"C"&D8+2 を引数に指定しました。 2 番目の引数には R1C1 形式を使用していることを表すために FALSE を指定しました。

=INDIRECT("R"&D7+2&"C"&D8+2,FALSE)

INDIRECT関数のサンプル(2)

Enter キーを押すと、 D9 セルには次のように表示されます。行番号 に 1 、列番号に 3 がデフォルトで入力されているため、 R3C5 セル (A1 形式で E3 セル)への参照が戻り値して返されます。

INDIRECT関数のサンプル(3)

新しい値として行番号として 3 、 列番号として 2 を入力したあとで Enter キーを押すと、 D9 セルには次のように表示されます。

INDIRECT関数のサンプル(4)

関数の挿入を使ってINDIRECT関数を入力する

INDIRECT 関数を入力する場合に関数の挿入を使って行う方法を試してみます。関数を挿入するセルをクリックして選択したあとで、関数の挿入をクリックします。

関数の挿入を使ってINDIRECT関数を入力する(1)

「関数の挿入」ダイアログが表示されたら関数名のところで「INDIRECT」をクリックしてください。そのあとで「OK」をクリックしてください。

関数の挿入を使ってINDIRECT関数を入力する(2)

「関数の引数」ダイアログが表示されたら、 1 番目の引数にセルの位置を表す文字列を入力します。今回は 1 番目のテキストボックスに直接 "R"&D7+2&"C"&D8+2 と入力しました。

関数の挿入を使ってINDIRECT関数を入力する(3)

次に 2 番目の引数に参照形式を表す論理値を入力します。今回は 2 番目のテキストボックスに直接 FALSE と入力しました。

関数の挿入を使ってINDIRECT関数を入力する(4)

引数の入力が終わりましたら最後に「OK」をクリックしてください。最初に選択したセルに INDIRECT 関数が入力され、指定した行番号と列番号から対応するセルを表す文字列を作成し、その文字列が示すセルへの参照を取得して、そのセルに入力されている値を表示します。

関数の挿入を使ってINDIRECT関数を入力する(5)

-- --

Excel における INDIRECT 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。