Excel 指定した範囲の行と列に対応する値を取得(INDEX関数)

2020年5月12日

INDEX関数は対象セル範囲と行番号と列番号を指定してセルの検索を行う関数です。

これも単体で使うことは少なく他の関数と組み合わせて使用します。

この記事では、その仕様と使い方を紹介します。

仕様

=INDEX(配列・参照,行番号,列番号,領域番号)
引数省略時の値説明
配列・参照省略不可検索するセル範囲を指定。
行番号列番号がなければ省略不可配列の何行目を取り出すのかを数値で指定。
(一番上の行を指定する場合は1)
列番号行番号がなければ省略不可配列の何列目を取り出すのかを数値で指定。
(一番左の列を指定する場合は1)
領域番号配列・参照に複数の範囲を指定した場合、省略不可配列・参照に複数の範囲を指定した場合、どの範囲を使用するか数値で指定。(先頭が1)
各引数の詳細

使用例

INDEX関数で青いセル範囲を検索する例です。

使用例一覧
使用例一覧

行番号と列番号の交差するセルを取得します。

行番号と列番号の交差する場所を取得
行と列を両方指定する例

列番号を省略か0を指定すると、その行を全て取得するスピルになります。

行番号のみ指定する例
行番号のみ指定する例

行番号を省略か0を指定すると、その列を全て取得するスピルになります。

列番号のみ指定する例
列番号のみ指定する例

範囲を超える指定を行うと#REF!エラーとなり取得に失敗します。

異常ケースの使用例

引数4:領域番号の使い方

引数4の領域番号は引数1に参照演算子で複数の範囲を指定した場合に、

どの範囲を利用するかを指定する引数です。

引数1に(C3:G7,J3:N7)を指定します。()は必須です。この範囲は二つ以上でも構いません。

その上で引数4の領域番号を指定します。

領域番号に1を指定するとC3:G7から検索し、2を指定するとJ3:N7から検索します。

実用上は何らかの条件でIF関数SWICTH関数で選ぶ使い方が想定されます。

引数1に複数の範囲を指定する例
引数1に複数の範囲を指定する例

スピルを利用する方法とメリット

Office365やExcel2019以降ではスピルという形式で記述可能です。

これは複数セルに数式をコピーする場合に便利な機能です。

スピルの利用には行番号か列番号を複数セルの範囲で指定します。

そしてスピルであれば配列の絶対参照($)が不要です。

スピルでINDEX関数を記述する例(E11セル)
スピルでINDEX関数を記述する例(E11セル)

数式を入力するのは最初の一つのセルですが、

列番号や行番号で指定した高さ分、数式がセルのコピーなしで自動拡大されます。

E11に指定したINDEX関数がE15まで自動拡大
E11に指定したINDEX関数がE15まで自動拡大

スピルを利用することで今回の例では、

E11セルに入力するだけでよいため(E12以降にコピーペーストが不要)

以下のメリットがあります。

  • 入力の手間が少ない(数式のセルが多いほど効果が大きい)
  • 数式を編集した時、コピー忘れのリスクがない(最初のセルを更新すると全セルに反映)
  • 絶対参照が不要
  • 途中に行を追加した場合、数式のコピー&ペーストが不要。行削除でも壊れにくい。

関連記事

VLOOKUP関数で大文字小文字を区別する方法

INDEX関数とMATCH関数を組み合わせてVLOOKUP関数より高度な検索を行う方法

VLOOKUP関数で左側の値を取得する方法

検索結果を座標で取得する方法

VLOOKUP関数で画像を取得する方法

関数の仕様と使い方の記事一覧