
「行と列を指定して特定のデータを取り出したい」
「VLOOKUPでは左側の列を参照できない…」
そんなときに使えるのが INDEX関数 です。
INDEX関数は、指定した範囲の中から、行番号と列番号に応じた値を返す関数で、他の関数と組み合わせることでより強力な検索機能として活用できます。
この記事では、INDEX関数の基本構文から使い方、MATCH関数との連携による柔軟な検索まで、わかりやすく解説します。
目次
INDEX関数とは?
- 読み方:インデックス関数
- 用途:指定したセル範囲の中から、行番号・列番号に応じた値を取得する関数
構文
=INDEX(範囲, 行番号, [列番号])
引数 | 説明 |
---|---|
範囲 | データの対象範囲 |
行番号 | 何行目かを指定(1から) |
列番号(省略可) | 何列目かを指定(省略時は1列目) |
基本的な使い方
例1:2行目・3列目の値を取得

=INDEX(A2:C4, 2, 3)
→ 範囲A2:C4の中で、「2行3列」のセルの値を取得します。
例2:1列目だけから値を取得(列番号省略)
=INDEX(A2:A5, 3)
→ A2:A5 の3行目(A4)の値を取得
MATCH関数との組み合わせ
例3:氏名を指定して対応する部署を取得(横断検索)

=INDEX(B2:B6, MATCH("佐藤", A2:A6, 0))
→ A列で「佐藤」を検索し、対応するB列(部署)を返す
※VLOOKUPではできない「左側を検索→右側を取得」が可能!
VLOOKUPとの違い
比較項目 | VLOOKUP | INDEX+MATCH |
---|---|---|
参照方向 | 左→右のみ | どちらの方向でもOK |
列番号の指定 | 列番号(数値)を直接指定 | MATCHで動的に取得できる |
検索精度 | 列構成が変わるとズレやすい | 範囲が変わっても柔軟に対応 |
処理速度 | 大規模データではやや遅い | 高速で安定性が高い(特に複雑な検索に強い) |
応用パターン
1. 入力された氏名からスコアを取得(動的検索)

=INDEX(C2:C6, MATCH(E2, A2:A6, 0))
→ E2に入力された名前に応じてC列のスコアを表示
2. 2次元配列から行列指定で値を取得
=INDEX(A1:D5, 3, 2)
→ A1:D5 の「3行2列」のセルの値を返す(例:B3)
よくある注意点と対策
注意点 | 解説 |
---|---|
行・列番号が範囲外だとエラーになる | #REF! エラー → 行・列数を確認して調整 |
複数範囲の選択時には「エリア番号」も必要 | 通常は1つの範囲だけにしておくのが安全 |
MATCH関数は「一致モード」に注意 | 0 =完全一致がおすすめ(検索精度重視) |
まとめ|INDEX関数で自在なデータ取得を実現しよう
INDEX関数は、行番号と列番号を指定してデータを正確に取得できる強力な関数です。
- VLOOKUPではできない柔軟な検索が可能
- MATCH関数と組み合わせれば「動的検索式」が簡単に作れる
- データ構造が変わっても安定した検索ができる
「表のどこに何があるか決まっている」ときは、INDEX関数で迷いのない検索式を構築しましょう。
関連リンク
- 【解説】ExcelのMATCH関数とは?位置を返す使い方とINDEXとの連携
- 【解説】ExcelのVLOOKUP関数とは?基本構文と縦方向の検索方法
- 【解説】ExcelのXLOOKUP関数とは?新しい検索関数の使い方
- Excel関数一覧|よく使う関数まとめ
コメント