スプレッドシートINDIRECT関数の使い方|指定したセルを参照して値を間接的に取得
本記事では、スプレッドシートのINDIRECT関数について解説していきます。
具体例を使いながら解説していますので、ぜひ参考にしてみてください。
スプレッドシートのINDIRECT関数
スプレッドシートのINDIRECT関数は、指定したセルを参照し値を間接的に取得できる関数です。下記のように指定します。
INDIRECT(セル参照の文字列, [A1 形式にする])
引数 | 説明 |
---|---|
セル参照の文字列 | 参照するセルを指定。文字列の場合は「””」で囲む |
A1形式にする | [省略可 – デフォルトTRUE]セル参照の形式をA1形式にするかR1C1形式にするかを選択 (R1C1形式を選択する場合はFALSEを指定) |
第2引数のA1形式にするかR1C1形式にするかの選択ですが、基本的には省略(TRUE)で問題ありません。
- A1形式
「A1」「G10」「A1:D5」のような一般的な形式 - R1C1形式
行・列を番号で指定する形式
「A1」→「R1C1」
「G10」→「R10C7」
「A1:D5」→「R1C1:R5C4」
R1C1形式は、Rが行・Cが列を表しています。
文章だとINDIRECT関数の使い方がイメージしづらいと思いますので、簡単な例を2つご紹介します。
INDIRECT関数の使い方①文字列で指定する
1つ目の例が文字列で指定するパターンです。
=INDIRECT(“A2”)
上記の例は、A2セルの値(りんご)を文字列として取得しています。
これだけだと、「=A2」と同じ結果になるためINDIRECT関数を使うメリットがほとんどありません。そこで次のパターンです。
INDIRECT関数の使い方②セルを間接的に参照する
2つ目の例が、セルを間接的に参照するパターンです。
=INDIRECT(D1)
こちらは例①のときと違い、セル番号を「””」で囲まず直接指定しています。考え方としては下記のようなイメージです。
D1セルを参照→D1セルに入力されているA2セルの値を文字列で取得
つまり、A2セルの値をD1セルを介して取得しているということになります。
ここまででINDIRECT関数の使い方は何となくわかったかと思いますが、使う場面やメリットがイメージできないでしょう。
次に作業の効率化・メンテナンス性が高い使い方をご紹介していきます。
実務でもよく使うINDIRECT関数を使った例
先程ご紹介したように、INDIRECT関数だけで使用するケースはほとんどありません。
INDIRECT関数はほかの関数と組み合わせることで便利になり、特にVLOOKUP関数との組み合わせで真価を発揮します。
今回は以下のような例をご用意しました。
6月・7月・8月の合計点をそれぞれのシートから取得し、3ヶ月の合計を算出したい
各月のシートを用意します。シート名は「6月」「7月」「8月」と、集計用の「マスタ」の4つです。
=VLOOKUP($A2,’6月’!$A$3:$E$11,2,false)
VLOOKUP関数で「佐藤」の6月の合計点が取得できました。C2セルに入力した関数をC10セルまでコピーしましょう。
これで各行の6月の合計点が取得できました。
7月・8月も関数をコピーしてシート名を修正すれば取得できますが面倒ですよね。そこでINDIRECT関数の出番です。
=VLOOKUP($A2,INDIRECT(C$1&”!$A$3:$E$11″),2,false)
VLOOKUP関数の第2引数は参照する範囲を指定するのですが、ここでINDIRECT関数を使用します。わかりやすいように、INDIRECT関数を使っていないときと比べてみましょう。
‘6月’!$A$3:$E$11
INDIRECT(C$1&“!$A$3:$E$11”)
‘6月’→C$1
「6月」というシート名をセル参照に変更しています。これでC1セルの値がシート名として扱われます。
!$A$3:$E$11→“!$A$3:$E$11”
範囲は変わりませんが、文字列として指定するため「””」で囲む必要があります。最後に「&」でつないで完了です。
手順3で関数を入力できたら、合計点を取得したいセル(C2〜E10)全てにコピーします。
これで、各月の合計点数が全て正しく取得できたと思います。
INDIRECT関数を使わないとシート名を手作業で修正しないといけませんが、セル参照にすることでその作業を削減することができました。
今回はたった3列でしたが、列数が何百・何千となる場合は非常に時短できます。
まとめ
今回は、スプレッドシートのINDIRECT関数について解説してきました。特にVLOOKUP関数との組み合わせはよく使う手法です。
VLOOKUP関数の使い方がわからない方は「【スプレッドシート】VLOOKUP関数の使い方まとめ|応用テクニックあり」で解説していますのでチェックしてみてください。