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
ABCDE
1検索先検索値検索結果
2シート名ラベルX
3Sheet2b=VLOOKUP(B3,INDIRECT(A3&"!A2:B5"),2)
4Sheet3b=VLOOKUP(B4,INDIRECT(A4&"!A2:B5"),2)
5Sheet4b=VLOOKUP(B5,INDIRECT(A5&"!A2:B5"),2)
【Sheet2
AB
1データ
2ラベルX
3a21
4b22
5c23
6d24
【Sheet3
AB
1データ
2ラベルX
3a31
4b32
5c33
6334
【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
7
8
9
10

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)(オプション)