INDIRECT関数は指定した範囲の文字列を参照するときに便利な関数であり、異なるシートやブックの内容も参照できるのが特徴です。ひとつのセル内容を変更するだけで大量のセルに影響するときに活用しやすく、手作業でのコピー&ペーストや再計算を防いで効率化できます。
本記事では、ExcelにおけるINDIRECT関数の使い方について解説します。エラーが出たときの解消法など活用例にも触れているので、参考にしてみましょう。
ExcelのINDIRECT関数とは?
INDIRECT関数とは、引数に指定した文字列のセル参照を返す関数です。数式自体を変更しないまま数式内で使用しているセル参照を変更することもできるため、非常に効率よく使えます。まずは、INDIRECT関数の基本を解説します。
INDIRECT関数の基本概要
INDIRECT関数は、「=INDIRECT(参照文字列, [参照形式])」で表せます。「参照文字列」は必須であり、適切なセル参照を指定していない場合、エラー値「#REF!」 と表示されてしまうので注意しましょう。
なお参照文字列の他のブックを指定する場合、参照先のブックを開いている必要があります。Microsoft Excel 2021における行数の上限は1,048,576、列数の上限は16,384です。
「参照形式」は省略可能ですが、 参照文字列で指定されたセルに含まれるセル参照の種類を論理値で指定したいときに活用しましょう。「TRUE」を指定すると、参照文字列にはA1形式のセル参照が入力されていると見なされます。「FALSE」を指定すると、参照文字列にはR1C1形式のセル参照が入力されていると見なされます。一般的にA1形式を使うことが多いので、省略してもよいでしょう。
関連記事:Excelで重複削除する条件とは? 手軽に削除する方法を紹介
セル参照を便利にするINDIRECT関数
INDIRECT関数は、参照したいセルを入力するときに使います。「=INDIRECT(“B4”)」と入力すれば、B4の内容である「一般」がそのまま反映されます。
別枠で「参照するセル番号」の欄を用意し、参照欄に「=INDIRECT(“F2”)」と入力した場合も、「参照するセル番号」が示すB4の内容(一般)を返します。
INDIRECT関数を活用したExcelの使い方
INDIRECT関数だけで活用すると、ただセルの内容をそのまま移すだけで使い道がないと感じるかもしれません。しかし、他の関数と組み合わせることで便利な使い方が可能です。
下記ではINDIRECT関数を活用したExcelの使い方を紹介します。
VLOOKUP関数との組み合わせ
【1】VLOOKUP関数の検索対象のセル範囲を切り替えるのに、INDIRECT関数を利用できます。会員種別「シルバー会員」、検索値「ファーストデイ」と入力した別欄を用意し、INDIRECT関数とVLOOKUP関数を併用することで、どちらの内容も参照した内容を返します。
今回は「=VLOOKUP(E2,INDIRECT(E1),2,FALSE)」と入力しています。E1とE2どちらの条件も満たす部分における、左から2列目の数値を返します。
【2】Enterキーで反映させると、シルバー会員かつファーストデイの料金が表示されます。
INDIRECT関数のエラー対処法
INDIRECT関数を使っていると、エラーが起きてしまうことがあります。ここでは代表的なエラーの内容と対処法を解説します。
よくあるエラーとその解決策
【1】左のような集計表に、INDIRECT関数を使って右のような単月売上額を記載した別シートの内容を参照したいときにエラーが起こりやすいので注意しましょう。
【2】通常通りINDIRECT関数を使い、「=INDIRECT(B3&”!B4″)」と記載するとエラーになってしまいます。
【3】実際にEnterキーでINDIRECT関数を反映してみたところ、エラー記号である「#REF!」と表示されてしまいます。「#REF!」とは、数式が無効なセルを参照している場合に表示されるエラー記号です。
【4】エラーの原因は、参照元のシート名に「~」「-」「(」「)」などの記号が使われている点にあります。INDIRECT関数を頻繁に使う場合、「~」「-」「(」「)」のないシート名に変更するのを検討してもよいでしょう。
既にシートを大量に作成していて変更が手間に感じるときは、INDIRECT関数の表記方法を変更します。シート名の前後に「’」をつけることで解消します。今回の場合、「=INDIRECT(“‘”&B3&”‘!B4”)」と記載します。
【5】「1~3月」シートにおける北海道の売上額を示す「3000」が入力されます。
Microsoftサポートによる対応案内
Microsoftの公式サイトでは、上記を一例としてINDIRECT関数について解説されています。
数式 | 説明 | 結果 |
=INDIRECT(A2) | セル A2 の参照セルの値を返します。 参照先はセル B2 で、値 1.333 が含まれます。 | 1.333 |
=INDIRECT(A3) | セル A3 の参照セルの値を返します。 参照先はセル B3 で、値 45 が含まれます。 | 45 |
=INDIRECT(A4) | セル B4 に “高橋” という名前が付けられているので、その定義された名前の参照先はセル B4 で、値 10 が含まれます。 | 10 |
=INDIRECT(“B”&A5) | “B” を A5 に含まれる値である 5 に結合します。 これにより、値 62 を含む B5 を参照します。 | 62 |
使い方が幅広い関数であり、セル内に直接数値が入力されていなくても、該当するセルの内容を参照できるのが利点です。数式自体を変更しないまま、数式内で使用しているセル参照を変更できるのもポイントです。
よくある質問
ExcelのINDIRECT関数に関して「よくある質問」を紹介します。
Excelのindirectとは?
「indirect」という言葉には、「間接的な」「二次的な」「副次的な」という意味があります。INDIRECT関数は引数に指定した文字列のセル参照を返す関数であり、シート名を使って別シートへの参照をしたりすることも多いことから、間接的な参照ができる関数として知られています。
Indirectとoffsetの違いは?
OFFSET関数は、値や範囲を参照する関数です。基準となるセルから、指定した行数と列数分だけ縦と横にずらした場所にあるセルを参照することができます。指定部分の参照ができる関数という意味ではどちらも同一ですが、OFFSET関数ではセルの範囲や参照したいセルを列番号・行番号で指定します。一方、INDIRECT関数では「A1」や「B2:C3」のような文字でセルの範囲や参照したいセルを指定します。
INDIRECT関数の場合、指定範囲の外にあるセルを参照しようとするとエラーになるため注意しましょう。
まとめ
INDIRECT関数は引数に指定した文字列のセル参照を返す関数であり、シート名を使って別シートへの参照をすることも可能です。異なるシートの内容を手作業でコピー&ペーストするのが手間なときや、元シートの変更内容を自動で反映させたいときに活用しましょう。
Excelのindirect関数に関する重要用語
用語 | 説明 |
INDIRECT関数 | 引数に指定した文字列のセル参照を返す関数。 |
#REF! | 数式が無効なセルを参照している場合に表示されるエラー記号。 |
INDIRECT関数におけるTRUE | 参照文字列にはA1形式のセル参照が入力されていると見なす参照形式。 |
INDIRECT関数におけるFALSE | 参照文字列にはR1C1形式のセル参照が入力されていると見なす参照形式。 |
OFFSET関数 | 値や範囲を参照する関数。 |