Excelの表計算をさらに便利に!INDIRECT関数 使い方
Excelで複数のシートやブックを参照する場合、参照先が変わるたびに数式を修正するのは大変ではありませんか? INDIRECT関数を使えば、参照先を文字列で指定できるため、柔軟な数式を作成できます。この関数を使いこなせば、今まで手間のかかっていた集計作業を効率化できるはずです。
ステップごとの解説
INDIRECT関数の基本構造
INDIRECT関数は、指定された文字列をセルの参照として解釈し、そのセルの値を返します。基本的な構文は以下の通りです。
=INDIRECT(参照文字列, [書式])
- 参照文字列: 参照したいセルや範囲を文字列で指定します。
- [書式]: 省略可能。TRUE(または省略)の場合はA1形式、FALSEの場合はR1C1形式で参照文字列を解釈します。
A1形式とは、Excelでおなじみの列をアルファベット、行を数字で表す形式(例:A1、B2、C3)。R1C1形式は、行と列を数字で表す形式(例:R1C1、R2C2)。通常はA1形式を使用します。

基本的な使い方
- Excelシートを開き、適当なセルに値を入力します(例:A1セルに「営業部」と入力)。
- 別のセルに「=INDIRECT(“A1”)」と入力します。
- INDIRECT関数を入力したセルに、「営業部」と表示されます。
たったこれだけで、A1セルの値を参照できました。簡単ですね。この例では、参照文字列を直接指定しましたが、他のセルの値を参照文字列として使うことも可能です。

別シートの参照
INDIRECT関数は、別シートのセルを参照する際にも役立ちます。例えば、「Sheet2」のA1セルを参照する場合、以下のように記述します。
=INDIRECT("Sheet2!A1")
シート名とセル番地を「!」で区切るのがポイントです。シート名にスペースが含まれる場合は、シングルクォーテーションで囲む必要があります(例:’Sheet 2′!A1)。
実務での活用シーン
部署ごとの売上集計
複数のシートに部署ごとの売上データが入力されているとします。各シート名は「営業部」「経理部」「総務部」と部署名になっていると仮定しましょう。集計シートで部署名を入力すると、対応するシートから売上合計を自動で取得できます。
- 集計シートのA1セルに「営業部」と入力します。
- B1セルに以下の数式を入力します。
=SUM(INDIRECT(A1&"!B2:B10")) - B1セルに営業部の売上合計が表示されます。
A1セルの値を参照してシート名を生成し、INDIRECT関数でそのシートのB2:B10セルの範囲を参照しています。A1セルの値を「経理部」に変えれば、経理部の売上合計が表示されます。これは便利!

ドロップダウンリストとの連携
ドロップダウンリストとINDIRECT関数を組み合わせることで、さらに柔軟な集計が可能です。部署名をドロップダウンリストから選択できるように設定し、選択された部署のデータを自動的に集計できます。
- 集計シートのA1セルにドロップダウンリストを設定し、部署名(営業部、経理部、総務部)を選択できるようにします。
- B1セルに以下の数式を入力します。
=SUM(INDIRECT(A1&"!C2:C10")) - A1セルで選択した部署の売上合計がB1セルに表示されます。
ドロップダウンリストで部署名を切り替えるだけで、集計結果が自動的に更新されるため、非常に便利です。経理の現場では、この設定を忘れて集計がずれるケースをよく見かけます。特にシート名とドロップダウンリストの値が完全に一致しているか注意が必要です。
トラブルシューティング
#REF!エラー
INDIRECT関数でよく発生するエラーが「#REF!」です。これは、参照文字列が無効な場合に表示されます。例えば、存在しないシート名やセル番地を指定した場合に発生します。
- シート名が間違っていないか確認しましょう(大文字・小文字、スペースの有無など)。
- セル番地が範囲外になっていないか確認しましょう。

数式が正しく計算されない
参照文字列が文字列として認識されていない場合、数式が正しく計算されないことがあります。参照文字列をダブルクォーテーションで囲んでいるか確認しましょう。
また、数式が循環参照になっている場合も、正しい結果が得られません。循環参照とは、数式が自分自身を参照している状態のことです。数式を見直して、循環参照を解消しましょう。
プロのコツ
名前定義との組み合わせ
INDIRECT関数は、名前定義と組み合わせることで、さらに強力になります。名前定義とは、セルや範囲に名前を付ける機能のことです。名前定義を使うことで、数式がより分かりやすくなり、メンテナンスも容易になります。
- 「営業部」シートのB2:B10セルを「営業部売上」という名前で定義します。
- 集計シートのB1セルに以下の数式を入力します。
=SUM(INDIRECT(A1&"売上")) - A1セルに「営業部」と入力すると、営業部の売上合計が表示されます。
数式が「=SUM(INDIRECT(A1&”売上”))」となり、非常に分かりやすくなりました。筆者の経験では、このテクニックを使うことで、複雑な数式も簡単に理解できるようになります。
INDIRECT関数とMATCH関数の組み合わせ
INDIRECT関数とMATCH関数を組み合わせることで、参照する列を動的に変更できます。例えば、商品名を入力すると、対応する列の売上データを自動的に集計できます。
=SUM(INDIRECT("売上データ!"&ADDRESS(2,MATCH(A1,売上データ!1:1,0))&":"&ADDRESS(10,MATCH(A1,売上データ!1:1,0))))
この数式は、A1セルに入力された商品名に対応する列を「売上データ」シートの1行目から検索し、その列の2行目から10行目までの合計を計算します。ADDRESS関数は、行番号と列番号からセル番地を生成する関数です。
揮発性関数としての注意点
INDIRECT関数は、揮発性関数と呼ばれる種類の関数です。揮発性関数は、シートが変更されるたびに再計算されます。そのため、INDIRECT関数を多用すると、Excelの動作が遅くなる可能性があります。
ポイント: INDIRECT関数の使用は必要最小限に留め、他の関数で代替できる場合は、そちらを優先しましょう。
Microsoftのドキュメントにも、パフォーマンスに関する記述があります。数式はシンプルに保つのが重要です。
まとめ
INDIRECT関数は、Excelの表計算をさらに便利にする強力な関数です。基本的な使い方から、実務での活用シーン、トラブルシューティング、プロのコツまで、幅広く解説しました。この記事を参考に、ぜひINDIRECT関数を使いこなして、業務効率を向上させてください。
- INDIRECT関数は、参照文字列をセルの参照として解釈する。
- 別シートや名前定義との組み合わせで、さらに便利になる。
- 揮発性関数であるため、多用すると動作が遅くなる可能性がある。
今日から、INDIRECT関数を使って、Excelをもっと自由に操ってみましょう。


コメント