Excelには、膨大なデータの中から特定の値を取り出す便利な関数がいくつもあります。
その中でも「INDEX関数」は、データの行や列の位置を指定して値を取得する柔軟性に優れた関数です。
一見すると少し難しそうな関数ですが、使い方をマスターすれば、VLOOKUPやHLOOKUPでは対応できないシーンでも活躍します。
この記事では、INDEX関数の基本的な使い方から、MATCH関数との組み合わせ、さらに実務での応用例まで、初心者にも分かりやすく解説します。
INDEX関数とは?基本の構文を確認しよう
INDEX関数は、指定した範囲の中から、行番号・列番号を使ってセルの値を取り出す関数です。
基本構文は次のとおりです。
=INDEX(範囲, 行番号, [列番号])
- 範囲:検索対象のセル範囲
- 行番号:取り出したい値がある行の位置
- 列番号(省略可):取り出したい値がある列の位置
たとえば、=INDEX(A1:C3, 2, 3)
とすると、A1からC3の範囲内で「2行3列目」、つまりセルC2の値を返します。
INDEX関数の2種類の使い方(配列形式と参照形式)
INDEX関数には「配列形式」と「参照形式」の2種類の使い方があります。
配列形式(最も一般的)
=INDEX(配列, 行番号, [列番号])
たとえば =INDEX(A1:B3, 2, 1)
は、A列2行目(A2)の値を返します。
参照形式(複数範囲から選択)
=INDEX((範囲1, 範囲2), 行番号, [列番号], 領域番号)
複数の範囲を指定して、その中のどの領域を対象にするか「領域番号」で指定します。
例:
=INDEX((A1:A3, B1:B3), 2, , 2)
これは、B列の2行目(B2)を返します。
MATCH関数と組み合わせて使う方法
INDEX関数は、MATCH関数と組み合わせることで、さらに強力な検索機能を実現できます。
MATCH関数とは?
MATCH関数は、指定した範囲の中で検索値が何番目にあるかを返す関数です。
=MATCH(検索値, 検索範囲, [照合の型])
INDEXとMATCHを組み合わせた例
=INDEX(B2:B5, MATCH("田中", A2:A5, 0))
これは、A列にある名前の中から「田中」の位置を探し、その行のB列の値を返します。
- A2:A5 → 名前リスト
- B2:B5 → 得点などの関連データ
このように、VLOOKUPのような使い方が可能で、しかも列の順番に制約されません。
VLOOKUP関数との違いとINDEXのメリット
Excelでよく使われるVLOOKUP関数とINDEX関数の違いは以下のとおりです。
比較項目 | VLOOKUP関数 | INDEX+MATCH関数 |
---|---|---|
検索方向 | 左から右のみ | 左右どちらも可能 |
列の挿入の影響 | 検索列の位置がずれる | 影響を受けにくい |
処理速度(大量データ) | 遅くなりがち | 比較的高速 |
柔軟性 | 低い | 高い |
このように、INDEX+MATCHは柔軟で保守性にも優れており、実務での使用に適しています。
実務でよくあるINDEX関数の使用例
例1:社員番号から名前を取得する
=INDEX(B2:B10, MATCH(1234, A2:A10, 0))
社員番号「1234」の人の名前を取得します。
例2:月別の売上データから特定の月の値を取得
=INDEX(B2:M2, MATCH("8月", B1:M1, 0))
1行目に月名、2行目に売上が並んでいる場合、「8月」の売上を取得します。
INDEX関数の注意点とエラー対処法
よくあるエラー
- #REF!:行や列番号が範囲を超えている
- #VALUE!:引数に不適切な値が入っている
エラーを防ぐには?
- 行番号・列番号が常に範囲内かどうかを
IFERROR
と組み合わせて処理すると安全です。
=IFERROR(INDEX(A2:B10, MATCH("山田", A2:A10, 0), 2), "該当なし")
まとめ|INDEX関数をマスターすればExcelスキルが一気に上がる!
INDEX関数は、一見すると複雑に見えるかもしれませんが、慣れてしまえば非常に強力なツールになります。
VLOOKUPよりも柔軟で、列の順番が変わっても壊れにくいなど、実務でも重宝する場面が多くあります。
特に、MATCH関数との組み合わせは覚えておいて損はありません。ぜひ、日常の業務や集計作業でINDEX関数を活用してみてください。