- ExcelのINDEX関数とは何か?何ができるのかを知りたい
- INDEX関数の使い方(引数・返り値)が知りたい
- INDEX関数を使用した時のエラーを解決したい
このようなお悩みをお持ちですか?
この記事を読むことで、INDEX関数の概要・使い方・エラー対策がわかります。
-著者情報-
名前:Utatane
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
実演パソコンのスペック(ソフトやバージョンによっては、表示や結果が異なる場合があります)
- OS:Windows11 Home 64bit
- Excel:Microsoft Office Home and Business 2021
ExcelのINDEX関数とは?
INDEXは、指定した「行」と「列」が交差した場所にあるセルの値を返す関数です。

例えば「一覧の中から特定の位置にある値を取り出したい」という時に便利で、VLOOKUPではできない検索も可能になります。
【VLOOK関数との違い】
VLOOKUP関数 | INDEX関数 | |
左方向への検索 | × | ○ |
範囲内に列が挿入された場合 | 参照がズレる | 影響なし |
柔軟性 | △ | ◎ |
VLOOKUPは「検索列より右側のデータしか取得できない」という制限がありますが、
INDEX+MATCHなら左方向の検索も可能で、表の構造が変わっても壊れにくいのが大きなメリットです。
では、INDEX関数の使い方を見ていきましょう。
INDEX関数の使い方
まずはINDEX関数の基本を学びましょう。
基本構文と簡単な使用例
▼基本構文
=INDEX(セル範囲, 行番号, [列番号])
※セル範囲が1列だけの場合は、[列番号]を省略できる
▼使用例
=INDEX(A1:E7, 3, 4)
→セル範囲内の3行目かつ4列目の値が抽出される
INDEX関数の引数は3つあり、実行後は該当するセルの値を返します。
引数や返り値、参照については下記記事をご参考ください。
今回の例では、第一引数で指定したA1~E7の範囲から、3行目&4列目であるD3の値(3-4)が返されます。

では、もう少し実践的な応用例を見ていきましょう。
MATCH関数と組み合わせた応用例
前項では第二引数の行番号と第三引数の列番号を直接指定して実行しました。
しかしながら、実践ではこのような使い方はあまりしません。
例えば、A列にある商品コードと1行目にある価格のクロスする値など、行列の番号が変わる場合がほとんどです。

そこで活躍するのがMATCH関数です。
MATCH関数を使うことで、商品コードA005が何行目なのか、価格の項目が何列目なのかを取得することができます。
まずはMATCH関数の基本構文について見ていきましょう。
▼MATCH関数の基本構文
=MATCH(検索値, 検索範囲, [照合の種類])
※[照合の種類]は省略可(1を指定したことのなる)
【照合の種類】
- 1::検査値以下の最大値
- 0:完全一致
- -1:検索値以上の最小値
※「1」や「-1」はほとんど使うことがないので、「0:完全一致」のみ覚えておけば大丈夫です
▼MATCH関数の使用例
=MATCH("A005", A2:A6, 0)
→A005が2行目にあれば、2を返します
ではINDEX関数とMATCH関数を組み合わせた例をみていきましょう。

INDEX関数の第二・第三引数をMATCH関数に置き換えただけです。
=INDEX(セル範囲, 行番号, [列番号])
↓ セル範囲を指定(見出しを含まない)
=INDEX(B2:D6, 行番号, [列番号])
↓ 行番号指定をMATCH関数に変更(検索範囲に1行目は含まない)
=INDEX(B2:D6, MATCH(F2, A2:A6, 0), [列番号])
↓ 列番号指定もMATCH関数に変更(検索範囲に1列目は含まない)
=INDEX(B2:D6, MATCH(F2, A2:A6, 0), MATCH(G1, B1:D1, 0) )
これで検索したい商品コードが変わったり、価格ではなく分類を表示したい場合などでも対応できます。
(F2、G1の値を変えるだけ)
よくあるエラー・トラブルと対処法
INDEX関数を使用したときによくあるエラー・トラブルをまとめました。
セルに「#REF!」と表示される
指定する行番号か列番号が範囲外に出てしまっている可能性があります。
例えばA1~C3の「3×3マス」の範囲を指定した場合、行番号も列番号も1~3以内でないといけません。
4や5などを指定した時点でこのエラーが発生します。
範囲や行・列番号を再度確認するか、MATCH関数を使うなどしてエラーを回避しましょう。
セルに「#VALUE!」と表示される
指定する行番号・列番号が数値以外だった場合にこのエラーが表示されることがあります。
また、MATCH関数を使用している場合は、検索する項目が無い(今回の例では「A003」や「価格」が一覧に無い)ことが考えられます。
間違いなく数値が指定されているか、MATCH関数を使っている場合は項目が存在するかを確認しましょう。
セルに「#NAME?」と表示される
関数名が間違っていたり、引数が適切に指定されていない場合にこのエラーが表示されることがあります。
関数名の再確認と、引数が3つ(1列だけなら2つ)指定されていることを再確認しましょう。
指定とは異なったセルの値が抽出される
MATCH関数を組み合わせる場合、それぞれの範囲がズレていると、抽出される値もズレてきます。
「MATCH関数と組み合わせた応用例」の項を参考に、セル範囲を見直してみましょう。
最後に
ExcelのINDEX関数について解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!