- 公開日:
- 更新日:
ExcelのINDEX関数の使い方|行と列が交差する位置にあるセルを返す
Excelの関数の中でもよく使用される関数としてINDEX関数があります。INDEX関数単体ではなくMATCH関数と組み合わせることが多いです。
Excelの検索関数としてVLOOKUP関数が代表的ですが、MATCH関数と組み合わせることでVLOOKUP関数より柔軟な検索が可能となっています。
実際の例を使用してどのようにINDEX関数を使うのか基本的な使い方から応用まで幅広くご紹介しています。
INDEX関数とは?
INDEX(インデックス)関数は、指定された行と列が交差する位置にあるセルまたはセルの参照を返す関数です。

上図はINDEX関数を使った例です。A2:E11のセル範囲の中で「8」行目と「2」列目が交差するセルである「37」が返ります。
INDEX関数の書式
INDEX関数の書式は「配列形式」と「参照形式」の2種類あります。
隣接しない複数の範囲から行と列が交差するセルを求める場合は「参照形式」を使用します。

書式は以下の2つの形式があり、形式ごとに引数が異なります。
- =INDEX(配列, 行番号, [列番号])
- =INDEX(参照, 行番号, [列番号], [領域番号])
配列形式
配列形式は最大で3つの引数があります。
第1引数(配列)
1番目の引数は「配列」です。この引数は必須です。セル範囲または配列定数を指定します。
第2引数(行番号)

2番目の引数は「行番号」です。この引数は必須です。ただし第1引数「配列」が1行のときは省略可能です。
配列内の行の位置を数値で指定します。「0」を指定した場合、行全体を返します。
第3引数(列番号)

3番目の引数は「列番号」です。この引数は任意です。ただし第2引数「行番号」が省略されているときは必須です。
配列内の列の位置を数値で指定します。「0」を指定した場合、列全体を返します。
参照形式
参照形式は最大で4つの引数があります。
第1引数(参照)

1番目の引数は「参照」です。この引数は必須です。1つまたは複数のセル参照を指定します。

隣接していない複数の範囲を指定する場合、「()」(括弧)で囲って「,」(カンマ)で区切ります。
第2引数(行番号)

2番目の引数は「行番号」です。この引数は必須です。
範囲内の行の位置を数値で指定します。「0」を指定した場合、行全体を返します。
第3引数(列番号)

3番目の引数は「列番号」です。この引数は任意です。
範囲内の列の位置を数値で指定します。「0」を指定した場合、列全体を返します。
第4引数(領域番号)

4番目の引数は「領域番号」です。この引数は任意です。省略すると第1引数「参照」で指定した範囲のうち1番目の範囲を使用します。
第1引数「参照」で隣接していない複数の範囲を指定した場合、どの範囲を使用するか数値で指定します。
INDEX関数の使用例
INDEX関数の使用例をご紹介します。引数の使い方を実際にやってみて確認しましょう。

今回は1から50までの数値が入った表形式のデータを用意しました。I2、I3セルに入力した行と列の番号を元に交差する数値を左のテーブルから求めましょう。

INDEX関数の結果を表示したい【セル(例ではH5セル)】を選択し、『=INDEX(』と入力します。

対象のセル範囲を指定します。「=INDEX(」に続いて『A2:E11,』と入力します。マウスでセル範囲をドラッグで選択することもできます。

行番号を指定します。「=INDEX(A2:E11,」に続いて『I2,』と入力します。マウスでセルを選択することもできます。

列番号を指定します。「=INDEX(A2:E11,I2,」に続いて『I3)』と入力します。マウスでセルを選択することもできます。最後に【Enter】キーを押します。

INDEX関数の数式を入力したH5セルに「8」行目と「2」行目が交差するB9セルの結果が表示されました。
INDEX関数の応用編
INDEX関数とMATCH関数を組み合わせる
INDEX関数とMATCH関数を組み合わせてデータを抽出するやり方をご紹介しています。INDEX関数はMATCH関数と組み合わせることが多いのでぜひやり方を覚えましょう。
ExcelのINDEX関数とMATCH関数を組み合わせた使い方
INDEX関数とSUMPRODUCT関数を組み合わせる
INDEX関数とSUMPRODUCT関数を組み合わせて複数条件に一致するデータを抽出するやり方をご紹介します。
SUMPRODUCT関数は範囲または配列の対応する要素の積を合計した結果を返します。書式は「=SUMPRODUCT(配列1,[配列2],…)」のように記述します。

上図では左側に商品ごとに「売上トップ店」「売上個数」「売上額」が用意されています。この表を元にして複数列の条件を満たす結果を右側に表示させます。
条件1として店舗が「渋谷」、条件2として売上個数が「200」を設定しました。INDEX関数とSUMPRODUCT関数を組み合わせることでこの2つをどちらも満たす検索結果(AND条件)を出力します。

検索結果を表示させたい【セル(例ではH2セル)】を選択し、『=INDEX(A1:D6,』と入力します。表データの見出しも含めて範囲を指定します。

SUMPRODUCT関数で複数の条件に満たす行数をINDEX関数に渡します。
「=INDEX(A1:D6,」に続いて『SUMPRODUCT((B1:B6=F2)*(C1:C6=G2)*ROW(B1:B6)),』と入力します。
SUMPRODUCT関数の中にさらにROW関数を使用しています。ROW関数は参照の行番号を返します。書式は「=ROW([参照])」のように記述します。
SUMPRODUCT関数で条件1「B1:B6=F2」と条件2「C1:C6=G2」を指定し、2つの条件に一致した行数をROW関数で抽出しています。

INDEX関数の列番号を指定します。検索結果に商品名を表示させたい場合、左側の表データでは1列目に商品名があります。
「=INDEX(A1:D6,SUMPRODUCT((B1:B6=F2)*(C1:C6=G2)*ROW(B1:B6)),」に続いて『1)』と入力し、Enterを押します。

H2セルに条件1と条件2を同時に満たす「クッキー」が表示されました。複数の関数が入れ子(ネスト)していますが、1つずつの役割を確認しましょう。
INDEX関数のよくあるエラーとその対処方法
#REFエラー
INDEX関数で「#REF」エラーになる原因は指定している行番号もしくは列番号が配列(参照)の範囲を超えているからです。

上図の例では、A2からE11のセル範囲を配列に指定していますが、行番号として指定している「11」が範囲外になっているため#REFエラーになっています。
#REFエラーを解消するためには行番号が範囲内になるように修正しましょう。
MATCH関数も合わせてチェック!
INDEX関数と組み合わせてよく使われるMATCH関数の基本的な使い方を説明しています。
ExcelのMATCH関数の使い方|検索値の範囲内での相対的な位置を返す
他の関数も合わせてチェック!
Office Hackでは、ここでご紹介できなかった関数の一覧ページもご用意しております。ぜひ、参考にしてください。