2025/5/8

エクセルINDIRECT関数とは?別シートを参照し、VLOOKUPと組合せる使い方【コピペ用テンプレートあり】

Thumbnail for エクセルINDIRECT関数とは?別シートを参照し、VLOOKUPと組合せる使い方【コピペ用テンプレートあり】

はじめに

エクセルの INDIRECT関数は、 参照するセルを文字列で指定する関数 です。 別シートのデータを動的に参照できます。 VLOOKUP関数と組合せることで、 使用するデータを動的に変更しながら、 必要な値を抽出できるようになります。

ここでは、以下の内容を取り扱っています。

  • INDIRECT関数による別シートの参照方法
  • INDIRECT関数とVLOOKUP関数の組合せによる、参照先を切り替えてデータ値を抽出する方法

下にテンプレート・サンプルのセルデータがあるので、 コピペですぐに使用できます。

INDIRECT関数とは

INDIRECT関数は 文字列 を受け渡すことで、参照先を指定できる関数です。

  • INDIRECT("A1") A1セルの値を参照

他の関数はセル参照で指定する

似た機能を持つ他の関数(OFFSET関数、INDEX関数)は、
セル参照 と数値を受け渡して、参照先を指定します。

  • OFFSET(A1, 0, 0) A1セルの値を参照
  • INDEX(A1, 1, 1) A1セルの値を参照

ダブルコーテーションで囲うと文字列として扱われる

数式の中で、ダブルコーテーション(")で囲われた文字は、文字列(テキスト)として扱われます。

たとえば、以下のように形式が変化します。

  • A1 : セル参照(参照)
  • "A1" : 文字列(テキスト)
  • 0 : 数値
  • "0" : 文字列(テキスト)

いつ使うのか?

INDIRECT関数は、 参照するセルを動的に変更したいときに使用します。

特に、参照するシートを切り替える場合に有効です 類似の機能を持つ関数の中でも INDIRECT関数のみが、 セルに記入したアドレスを参照先として直接使用できる ためです。

エクセルでの算出方法

INDIRECTVLOOKUP関数を組み合わせることで、 異なるシート中のデータセットを参照し、 必要な値を抽出するサンプルが以下の通りです。

Sheet1, Sheet2, Sheet3, Sheet4という名称の4つのシートを用意し、 それぞれに以下のシート内容をコピーしてみてください。 全セルをコピー ボタンをクリックし、エクセルの A1 セルに貼り付け) Sheet1D列 セルに、他のシートのデータ値が表示されます。

【Sheet1
ABCD
1検索先検索値検索結果
2シート名ラベルX
3Sheet2b22
4Sheet3b32
5Sheet4b42
【Sheet2
AB
1データ
2ラベルX
3a21
4b22
5c23
6d24
【Sheet3
AB
1データ
2ラベルX
3a31
4b32
5c33
6d34
【Sheet4
AB
1データ
2ラベルX
3a41
4b42
5c43
6d44

計算手順

上記のINDIRECTVLOOKUP関数を組み合わせた処理について、 分解すると以下の通りです。

  • 1.文字列の結合
  • 2.関数に入力
  • 3.VLOOKUPで使用
ABCDEFGHIJKLMNO
1検索先検索値数式:=A3="!A2:B3"=A3&"A2:B5"=INDIRECT(A3&"!A2:B5")=VLOOKUP(B3,INDIRECT(A3&&"!A2:B5"),2)
2シート名ラベル
3Sheet2b結果:Sheet2!A2:B3Sheet2!A2:B5ラベルX22
4Sheet3ba21
5Sheet4bb22
6c23

1. 文字列の結合

2つの文字列 (Sheet2, !A2:B3) を結合し、 シート名を含むセル参照の文字列 (Sheet2!A2:B5) を作成します。 シート名 Sheet2 は、セルの入力値から取得しており、 Sheet3Sheet4 に変更した文字列も同様に作成しています。 上記により、文字列形式の参照先が得られます。

※ シート名を含むセル参照は、シート名 + ! + セル の形式です。

文字列の結合

数式中で、文字列を結合するには、&演算子を使用します。

2. 関数に入力

INDIRECT関数に、1.で作成した文字列を渡します。 これにより、参照先の配列値が得られます。

3. VLOOKUPで使用

VLOOKUP関数に、2.で得られた配列値を渡します。 これにより、 動的に取得したデータセット内を検索 し、 必要な値を抽出できます。

VLOOKUP関数

指定した値を配列の中で検索し、ヒットした行の中の(指定列の)値を返します。

例:=VLOOKUP(B2,A2:B5,2) A2:B5範囲で B2を検索し、ヒットした行の2列目の値を返す。

  • 第1引数 (B2): 検索する値(必須)
  • 第2引数 (A2:B5): 検索範囲(必須)
  • 第3引数 (2): 取得する列番号(必須)
  • 第4引数 : 近似一致検索するか (TRUE / FALSE)(オプション)