当サイトの記事にはプロモーションが含まれています。

【初心者向け】ExcelのINDIRECT関数をやさしく解説!使い方と活用例

パソコンパソコン・スマホ教室
スポンサーリンク

「Excelの作業、もっとラクにできないかな…」と感じたことはありませんか。そんなときに役立つのがINDIRECT(インダイレクト)関数です。この記事では、パソコンにあまり詳しくない方でも理解できるよう、基本の使い方から、当サイトが実機で確かめた「つまずきポイント」までをやさしく解説します。数式のコピペだけでなく、なぜエラーになるのかまで分かるように整理しました。

スポンサーリンク

INDIRECT関数とは

ExcelのINDIRECT関数のイメージ

文字列でセルを参照する関数

INDIRECT関数は、文字列で指定したセルの値を取得する関数です。たとえばセルA1に文字列「B2」と入力しておき、別のセルに =INDIRECT(A1) と入力すると、そのセルにはセルB2の値が表示されます。これは、A1に入力された「B2」という文字列をセルの参照先として読み取り、その参照先の値を返す仕組みです。

普通の数式は =B2 のように「セルそのもの」を指しますが、INDIRECTは「B2という文字」を手がかりに参照を組み立てる点が大きな違いです。この違いが、あとで説明するエラーの原因にもつながります。

基本的な構文

INDIRECT関数の基本的な書き方は次のとおりです。

=INDIRECT(参照文字列, [参照形式])

ここがポイント!

  • 参照文字列 … 参照したいセルの位置を文字列で指定します(例「B2」「Sheet1!A1」)。
  • 参照形式 … 省略できます。省略またはTRUEでA1形式、FALSEでR1C1形式として解釈します。

通常はA1形式を使うため、第2引数は省略して問題ありません。Microsoft公式の「INDIRECT 関数」ページでも、INDIRECTを使うと数式そのものを書き換えずに参照先を変えられること、第2引数でA1形式とR1C1形式を切り替えられることが説明されています(出典は記事末尾)。

公式の仕様を実機で直接参照と対比して確かめた

ここからは、Microsoft公式に書かれている仕様を、当サイトがExcel 2019(買い切り版・バージョン16.0.19127)で実際に操作し、普通のセル参照(直接参照)と並べて確かめた結果を紹介します。数式の結果は、当サイトの実機で表示された値をそのまま記載しています。

ここがポイント!

  • 公式は『参照文字列に適切なセル参照を指定していない場合、エラー値 #REF! が返されます』と定めています。R1C1形式の文字列・引用符なしのスペース入りシート名・改名後の古い名前は、いずれもこの「不正な参照」に当てはまり#REF!になります。以下はそれを条件別に実機で再現したものです。

シートを改名すると直接参照は追従しINDIRECTだけ壊れる

シートの名前をSrcからSourceに変えた後の実機のExcel画面。直接参照の =Src!A1 は自動で =Source!A1 に書き換わり999を保つが、INDIRECTは Src のままで結果が #REF! になっている
こちらが当サイトの実機です。シート名をSrc→Sourceに変えると、直接参照は自動で追従して999のまま、INDIRECTだけが#REF!になりました(当サイトが実際にExcelで操作して撮影)。

同じセル(SrcシートのセルA1、値は999)を、直接参照 =Src!A1 と =INDIRECT("Src!A1") の両方で参照した状態を用意し、シート名を「Src」から「Source」に変更してみました。当サイトの実機で試したところ、直接参照のほうは数式が自動的に =Source!A1 へ書き換わり、999をそのまま表示し続けました。一方でINDIRECTのほうは数式が =INDIRECT("Src!A1") のままで、文字列の「Src」は書き換わらず、存在しないシートを指してしまい結果は#REF!エラーになりました。

つまりINDIRECTの中の参照は「ただの文字」なので、シート名を変えてもExcelが面倒を見てくれません。改名後に古い名前を指してしまうのは、公式が言う「不正な参照は#REF!」の一例です。ただし直接参照は自動で追従するのにINDIRECTだけが取り残されるという違いに注意してください。シート名を変える可能性がある表では、この点が思わぬエラーの原因になります。

セルを挿入しても直接参照は追いINDIRECTは追わない

A1に空のセルを挿入して列を下へずらした後の実機のExcel画面。直接参照は自動で追従して10を表示するが、INDIRECTの A1 参照は空になったA1を指して0を表示している
挿入したときの実機です。直接参照は10を追いかけますが、INDIRECTはエラーも出さず静かに0を返しました(当サイトが実際に操作して撮影)。

次に、セルA1に10を入れ、C1に =A1、D1に =INDIRECT("A1") を入力しました。ここでA1の位置に空のセルを挿入して、列Aの中身を1つ下(A2)へずらしてみます。当サイトの実機では、元の10はA2へ移動し、直接参照のC1は数式が =A1 から =A2 へ自動調整されて10を表示し続けました。ところがINDIRECTのD1は =INDIRECT("A1") のままで、今は空になったA1を指すため結果は0になりました。

ここで一番こわいのは、#REF!のようなエラーすら出さず、静かに0を返してしまう点です。#REF!なら間違いに気づけますが、0は正しい計算結果に見えてしまい、集計の合計がいつの間にか狂う原因になります。直接参照はデータを追いかけるのにINDIRECTは追わない、というこの対比も公式では説明されていません。行や列の挿入・削除が多い表では、INDIRECTが思わぬ場所を指していないか必ず確認しましょう。

第2引数を省略するとA1形式になりR1C1文字列はエラー

セルA2に555を入れ、参照形式の指定を変えて3通り試しました。当サイトの実機での結果は次のとおりです。

  1. =INDIRECT("R2C1",FALSE) は555。第2引数FALSEでR1C1形式として解釈され、R2C1(2行1列=A2)を正しく参照しました。
  2. =INDIRECT("R2C1") は#REF!。第2引数を省略すると既定のA1形式で解釈され、「R2C1」はA1形式として不正なためエラーになりました。
  3. =INDIRECT("A2") は555。省略時はA1形式なので、そのまま素直に参照できました。

ここから、第2引数を省略すると既定でA1形式になることが実機で確認できます。R1C1形式の文字列を渡したいときは、第2引数にFALSEを付け忘れないようにしてください。

シート名にスペースがあるときは単一引用符で囲む

スペースを含む My Data シートを参照した実機のExcel画面。引用符なしのINDIRECTは #REF! になり、単一引用符で囲んだINDIRECTは777を返している
シート名にスペースがある場合の実機です。引用符なしだと#REF!、単一引用符で囲むと777が取れました(当サイトが実際に操作して撮影)。

「My Data」のようにスペースを含むシート名(セルA1に777)を参照するとどうなるかも試しました。当サイトの実機では、=INDIRECT("My Data!A1") のように引用符で囲まないと#REF!になり、=INDIRECT("'My Data'!A1") のようにシート名を単一引用符(’)で囲むと777が正しく表示されました。

これは、スペースや記号を含むシート名は単一引用符で囲むというExcel共通のルールにINDIRECTも従うためです。スペース入りのシート名は単一引用符で囲む、と覚えておくと安心です。

セルの数字だけで参照する行を動的に切り替える

INDIRECTで M と K1 をつないだ数式で、K1が2のときに結果が200になっている実機のExcel画面。K1を1や3に変えると100や300に切り替わる
動的参照の実機です。数式は変えずにK1の数字を1→2→3と変えるだけで、結果が100→200→300と切り替わりました(当サイトが実際に操作して撮影)。

INDIRECTの便利さが一番伝わるのがこの動きです。M1に100、M2に200、M3に300を入れ、別のセルに =INDIRECT("M"&K1) と入力します。当サイトの実機で、K1の値を3→2→1と変えたところ、結果は300→200→100と切り替わりました。数式そのものは一切変えず、K1の数字を変えるだけで参照する行が動くのです。

このように「文字列を組み立てて参照を作る」ことで、あとから紹介する集計やリスト連動といった便利な使い方につながります。

INDIRECT関数の活用例

ここからは実務でよく使う3つの場面を、当サイトが実機で試した結果とあわせて紹介します。

シート名をセルから参照する

各店舗の売上が「東京」「大阪」などのシートに分かれているとき、集計シートのセルA1にシート名を入力し、隣のセルに =INDIRECT(A1&"!B2") と入力します。当サイトの実機で試したところ、A1が「東京」のときは東京シートのB2(111)、A1を「大阪」に変えると大阪シートのB2(222)が取得できました。シート名をセルから差し替えるだけで参照先が切り替わるので、複数シートの集計がぐっとラクになります。

VLOOKUP関数と組み合わせる

会員種別ごとに料金表が分かれているケースでは、VLOOKUPの検索範囲をINDIRECTで切り替えられます。料金表の範囲に「Gold」などの名前を定義しておき、次のように書きます。

=VLOOKUP(検索値, INDIRECT("Gold"), 2, FALSE)

当サイトの実機では、INDIRECT(“Gold”)が名前「Gold」の範囲を返し、その表から検索値に対応する価格を取り出せました。名前の部分をセル参照にすれば、会員種別に応じて数式を書き換えずに料金表を切り替えられます。

ドロップダウンリストと連動させる(落とし穴に注意)

「A1で選んだ値に対応するリストをB1に出す」という連動もINDIRECTで作れますが、ここには実機で確かめた落とし穴があります。あらかじめ各グループ名で「名前の定義」をしておき、B1の入力規則の元の値に =INDIRECT(A1) と設定します。当サイトの実機での結果は次のとおりです。

  1. A1の値が定義した名前とぴったり一致するときだけ、その範囲が返り連動が成功しました。
  2. A1の値が定義名と1文字でも違うと#REF!になり、リストが出ませんでした。全角と半角、余分な空白にも要注意です。
  3. そもそも名前にスペースを含めようとすると、Excelが名前の定義自体を受け付けませんでした。グループ名にスペースを使う設計は避ける必要があります。

「=INDIRECT(A1) と書けば必ず表示される」わけではなく、選択値と定義名を完全に一致させることが連動成功の条件です。

公式ドキュメントで仕様を確認する

マイクロソフト公式のINDIRECT関数の解説ページ。説明と書式、参照文字列に適切なセル参照を指定しない場合は #REF! が返されるという記載が見える
出典=Microsoft公式。『参照文字列に適切なセル参照を指定していない場合、エラー値 #REF! が返されます』と明記されています。画像をクリックすると公式ページが開きます。

参照形式(A1形式・R1C1形式)や引数の詳しい仕様は、Microsoftの公式ページで確認できます。上の画像をクリックすると公式ページが開きます。実機での挙動と公式の説明を突き合わせると、理解が確かなものになります(リンクは記事末尾の出典欄にも掲載しています)。

よくある質問や疑問

INDIRECTを使うとエラーが出るのはなぜですか

公式ページには『参照文字列に適切なセル参照を指定していない場合、エラー値 #REF! が返されます』とあり、参照先が正しく指定できていないことが主な原因です。たとえばシート名を「Sheet1」と指定しているのに実際のシート名が違っていたり、あとから改名していたりすると =INDIRECT(A1&"!B2") は#REF!になります。この記事の前半で紹介したR1C1形式の文字列・引用符なしのスペース入りシート名・改名後の古い名前も、すべてこの1つのルールから説明できます。INDIRECTは文字列を書き換えてくれないので、参照先の名前が今も正しいかを確認しましょう。

INDIRECTは他のブックでも使えますか

この点は公式の仕様に明記があります。Microsoft公式ページには『参照文字列で他のブックを参照している場合 (外部参照)、そのブックを開いておく必要があります。参照先のブックを開いていない場合、エラー値 #REF! が返されます』と記載されています。他のブックを参照するときは、そのブックを開いた状態で使ってください(外部ブックの参照は当サイトでは未検証のため、公式仕様としてご案内しています)。

まとめ

INDIRECT関数は、文字列でセルやシートを動的に参照できる便利な関数です。一方で、当サイトが実機で確かめたとおり、シートの改名やセルの挿入では中の文字が書き換わらず#REF!や意図しない値になることがあります。動的に切り替えられる強みと、追従してくれない弱みの両方を押さえておけば、集計やリスト連動でしっかり使いこなせます。まずは小さな表で実際に試してみてください。

Excelの関数でつまずいたり、「自分の表だとどう書けばいい?」と迷ったりしたら、画面を見ながら一緒に解決できます。お気軽にご相談ください。

出典・引用サイト

最終確認日 2026年7月16日(Excel 2019 買い切り版・バージョン16.0.19127で動作確認)/文責 uri uri

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました