
INDIRECT関数とは、指定される文字列への参照を返す関数である。たとえば、A1を指定することでA1の値を出力できる。MATCH関数やVLOOKUP関数と組み合わせて使うことが多いので覚えておこう。
目次
INDIRECT関数とは何なのか分からないという方もいるのではないだろうか。INDIRECT関数は単体で使うのではなく、MATCH関数やVLOOKUP関数などと組み合わせて使う場合が多い。
本記事ではINDIRECT関数とは何かについて解説する。MATCH関数やVLOOKUP関数と組み合わせて使う方法についてもまとめた。
INDIRECT関数とは?
INDIRECT関数とは、指定される文字列への参照を返す関数である。たとえば、A1に「5」が入力されている場合、INDIRECT関数でA1を指定すると「5」が出力される。
INDIRECT関数を使わなくても「=A1」と入力すれば、A1の値を取得することは可能である。INDIRECT関数は単体で使うことは少ない。MATCH関数やVLOOKUP関数と組み合わせて使うことがほとんどである。
■INDIRECT関数の構文
INDIRECT関数の構文は次のとおりである。
- INDIRECT(参照文字列, [参照形式])
1つ目の引数には参照文字列を指定する。2つ目の引数には参照形式を指定する。ただし、2つ目の引数は省略することが多い。2つ目の引数に「FALSE」を指定すると、R1C1形式に対応できる。ただ、そもそもR1C1形式があまり使われない。
以下のように「=INDIRECT(“A1”)」と入力してみる。
実行すると「test」と表示された。「A1」にはダブルクォーテーションが必要である。
ダブルクォーテーションがないと、下記のようにエラーが出てしまう。
INDIRECT関数とMATCH関数を組み合わせる方法
続いて、INDIRECT関数とMATCH関数を組み合わせる方法について解説する。
次の3つの手順で説明していこう。
- 表を準備する
- MATCH関数を使う
- INDIRECT関数を使う
■1.表を準備する
まず、プランごとの料金がまとめられた以下の表を準備しよう。
A列にはプラン名、B列には料金を記入する。
■2.MATCH関数を使う
まずはMATCH関数単体で使ってみよう。MATCH関数は指定した範囲内から、指定した文字列がどこにあるのか、取得してくれる関数だ。
たとえば、「=MATCH(“ライトプラン”,A2:A5,0)」とすることで、「ライトプラン」がA2〜A5のどこにあるのかを、MATCH関数が返してくれる。
実行すると「2」と返された。「ライトプラン」は2番目に書かれているので合っていることになる。
■3.INDIRECT関数を使う
それではINDIRECT関数とMATCH関数を組み合わせる方法を紹介しよう。
以下の画像では「=INDIRECT(“B”&MATCH(“ライトプラン”,A2:A5,0)+1)」としている。
まず、MATCH関数を使って、「ライトプラン」がどこにあるかを取得している。「ライトプラン」は2番目にあるので「2」が返される。
つまり、MATCH関数が『ライトプラン』が2番目にあることを返すので、2+1=3となり、”B”&3で”B3″という参照文字列ができる。つまり、INDIRECT関数はB3を参照することになる。
B3を参照しているので、実行すると「500」と表示された。
INDIRECT関数とMATCH関数を組み合わせることで、指定したプランに対応する料金を取得することに、成功している。
INDIRECT関数とVLOOKUP関数を組み合わせる方法
続いて、INDIRECT関数とVLOOKUP関数を組み合わせる方法について解説する。
次の3つの手順で説明していこう。
- 表を準備する
- INDIRECT関数を使う
- VLOOKUP関数を使う
■1.表を準備する
まずは画像のように2種類の表を準備しよう。
2025年以前の表には「A」、2025年以降の表には「B」と名前をつけておく。
■2.INDIRECT関数を使う
先ほどは表に「A」「B」という名前を付けた。表に名前を付けることで、INDIRECT関数でその表を参照し、表の中身を出力することができる。
以下の画像では「=INDIRECT(E2)」としている。E2には「A」と書かれている。つまり、INDIRECT関数によって2025年以前(A)の表を取得しようとしている。
実行すると、2025年以前(A)の表が出力されたことが分かる。
■3.VLOOKUP関数を使う
INDIRECT関数とVLOOKUP関数を組み合わせることで、INDIRECT関数で取得した表の中から、特定のデータがどこにあるのかを取得することができる。
以下の画像ではE2には「A」、E3には「ライトプラン」と記入している。
そして、「=VLOOKUP(E3,INDIRECT(E2),2,0)」としている。まず、INDIRECT関数で「A」の表を取得している。つまり、「=VLOOKUP(E3,”A”,2,0)」ということになる。
続いて、VLOOKUP関数でE3(ライトプラン)が、Aの表のどこにあるかを探している。VLOOKUP関数の3つ目の引数には「2」が指定されている。「2」を指定することで、2番目のデータを出力することができる。
実行すると「500」と表示された。2025年以前(A)の表から「ライトプラン」を探し、その2番目のデータである「500」を出力している。
このように、INDIRECT関数とVLOOKUP関数を組み合わせることで、指定した表から特定のデータを検索して、表示することが可能だ。
まとめ
本記事ではINDIRECT関数について解説した。最後にINDIRECT関数の基本的な構文をおさらいしよう。
- INDIRECT(参照文字列, [参照形式])
また、MATCH関数と組み合わせる例は次のとおり。
「=INDIRECT(“B”&MATCH(“ライトプラン”,A2:A5,0)+1)」
- MATCH関数で「ライトプラン」がA2〜A5のどこにあるか探す
- INDIRECT関数で「ライトプラン」がある場所のB列を参照する
VLOOKUP関数と組み合わせる例は次のとおり。
「=VLOOKUP(E3,INDIRECT(E2),2,0)」
- INDIRECT関数でE2の値(表)を参照する
- VLOOKUP関数でE3の値が参照した表のどこにあるか探し、2番目のデータを出力
INDIRECT関数はこのように、他の関数と組み合わせることで効果を発揮する。
関連記事:5分で理解できるExcelの「INDIRECT関数」の基本的な使い方
構成/編集部