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

INDIRECT 関数は Excel で用意されている関数の一つで、文字列で C2 や R3C4 などのように位置を指定したセルへの参照を取得します。ここでは Excel における INDIRECT 関数の使い方について解説します。

※ Excel の対応バージョン : 365 web 2021 2019 2016 2013 2010 2007

※ 公式サイトでの解説 : INDIRECT 関数

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

INDIRECT関数の定義と使い方

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

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

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

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

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

=INDIRECT("C4")

INDIRECT関数の定義と使い方(1)

INDIRECT関数の定義と使い方(2)

また 1 番目の引数に文字列ではなくセルを指定した場合、指定したセルに入力されているセルの位置を表す文字列が示すセルへの参照が返されます。例えば C8 セルに文字列で "C5" と入力されているときに C9 セルに次のように数式を入力します。

=INDIRECT(C8)

INDIRECT関数の定義と使い方(3)

C8 セルに入力されている "C5" が引数に指定されたことになり、結果として C5 セルに入力されている値を取得して表示します。

INDIRECT関数の定義と使い方(4)

C8 セルに入力されている値を "C5" から "C3" に変更すると、 C9 セルに表示される値も C3 セルに入力されている値に変更されます。

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 形式に変更することができます。

セルの位置をR1C1形式で指定する(1)

セルの位置をR1C1形式で指定する(2)

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

例えば C8 セルに "R4C3" と入力した上で、 C9 セルに次のように 2 番目の引数に FALSE を指定してみます。

=INDIRECT(C8,FALSE)

セルの位置をR1C1形式で指定する(3)

"R4C3" ( A1 形式だと C4 セル)のセルに入力されている値を取得し表示します。

セルの位置をR1C1形式で指定する(4)

セル範囲に付けた名前で指定する

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

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

セル範囲に付けた名前で指定する(1)

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

セル範囲に付けた名前で指定する(2)

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

セル範囲に付けた名前で指定する(3)

では C6 セルに "算数" と入力した上で C7 から E7 セルを選択します。そして数式バーに次のように数式を入力してください。

=INDIRECT(C6)

セル範囲に付けた名前で指定する(4)

Enter キーではなく Ctrl + Shift + Enter キーを押してください。 "算数" と名前が付けられたセル範囲を配列数式として取得し表示します。

セル範囲に付けた名前で指定する(5)

C6 セルの値を "国語" に変更すると "国語" と名前が付けられたセル範囲の値を取得して表示します。

セル範囲に付けた名前で指定する(6)

セル範囲に付けた名前で指定する(7)

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

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

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

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

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

「関数の引数」ダイアログが表示されたら、引数に文字列の形式でセルの位置が入力されたセルを指定します。 1 番目の引数を選択したあとで引数に入力するセルを Excel 上でクリックして下さい。

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

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

ダイアログの 1 番目の引数のところに先ほどクリックしたセルが表示されます。今回は 2 番目の引数は省略します。

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

引数の指定が終わると結果としてセルに表示される値も表示されます(今回は可変のため具体停な値は表示されちません)。最後に「OK」をクリックしてください。

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

最初に選択したセルに INDRIRECT 関数が入力され、引数に指定したセルに入力されている文字列が示すセルの値を取得し表示します。

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

-- --

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

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

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