INDEX関数はどういうときに使う?分かりやすく解説!

ExcelのINDEX関数の使い方や、どういうときに使うのかを、分かりやすく具体例でご紹介します。定番のMATCH関数との組み合わせ方法や、INDEX関数の応用方法についても解説しているので、ぜひ参考にしてみてください。

スポンサーリンク

INDEX関数とは?

INDEX関数はどういうときに使う?分かりやすく解説!

INDEX関数は、指定した範囲から、行と列がクロスするセルの値を返します。

たとえば、A2:B4の範囲から、3行目と2列目が交差するセルの値を抽出したい場合、数式は次のようになります。

例:=INDEX(A2:B4,3,2)

ポイント

A2:B4の範囲で数えるため、左上のA2セルが1行目、1列目となります。この数式は、A2を基点に3行目と2列目が交差するB4セルの値を返します。

INDEX関数の引数:(参照, 行番号, [列番号])

スポンサーリンク

INDEX関数の基本(MATCH関数との組み合わせ)

検索値と一致する値を抽出する

INDEX関数はどういうときに使う?分かりやすく解説!

最も基本的となるのが、MATCH関数と組み合わせて、行と列のクロスする値を抽出する方法です。

たとえば、A列の商品名から「ばななの価格」を抽出したい場合、数式は次のようになります。

例:=INDEX(A2:B4,MATCH(D2,A2:A4,0),2)

数式の解説

  • MATCH関数A2:A4の範囲で、ばななが何番目にあるかを検索します。
  • INDEX関数:MATCH関数の結果(2番目)を行番号として、2列目(B2:B4)の2行目の値(100)を返します。

MATCH関数の引数:(検索キー, 範囲, [検索の種類])

INDEX関数を使うメリット

VLOOKUP関数でも検索値と一致する値を抽出できますが、INDEX関数とMATCH関数を組み合わせて使うことで、次のようなメリットがあります。

  1. 柔軟性が高い:VLOOKUP関数は、検索キーが範囲の1列目に限定されますが、INDEX関数はMATCH関数を組み合わせることで、どの列でも検索キーに指定できます
  2. 処理速度が速い:INDEX関数は、MATCH関数が返した「位置」の情報を使って、指定されたセルに直接アクセスします。そのため、データ量が膨大になった場合でも、処理が速くなります。
  3. 列の挿入や削除に強い:MATCH関数が自動で列の位置を計算するため、途中に列を挿入したり削除したりしても数式が壊れません。
スポンサーリンク

INDEX関数の応用

一意の値を抽出する

INDEX関数はどういうときに使う?分かりやすく解説!

INDEX関数を応用すると、UNIQUE関数がなくてもデータから一意の値を取り出せます。

  1. 作業列で「初めて出現した値」の行番号を取得
    • COUNTIF関数とIF関数を使って、値が初めて出現した行にだけ、行番号を振ります。
    • 例: =IF(COUNTIF( $B$2:B2, B2 )=1,ROW(),"")
  2. INDEX関数で一意の値を抽出
    • 次に、INDEX関数はSMALL関数が返す行番号を使って、重複しない値だけを抽出します。
    • 例: =IFERROR(INDEX(B:B,SMALL($A$2:$A$5,ROW(A1))),"")

この数式を下のセルにオートフィルでコピーすると、重複を排除した一意の値が抽出されます。


さらに詳しい解説は、「UNIQUE関数が使えない場合の代用方法」をご参照ください。

最終行の値を抽出する

INDEX関数はどういうときに使う?分かりやすく解説!

INDEX関数を応用すると、特定の列からデータの入力されている最終行の値を取り出せます。

例:=INDEX(A:A,MAX((A:A<>"")*ROW(A:A)))

※Excelのバージョンによっては、[Ctrl]+[Shift]+[Enter]で確定する必要があります。

数式の解説

  1. A列のセルが空白かどうかを判定します。その結果(TRUEまたはFALSE)に行番号を掛け算することで、データが入力されているセルの行番号だけを取得します。
  2. MAX関数で、取得した行番号の最大値(最終行の番号)を取り出します。
  3. INDEX関数で、MAX関数が返す行番号を使って、指定した範囲から値を抽出します。

空白行を詰める

INDEX関数はどういうときに使う?分かりやすく解説!

INDEX関数を応用すると、特定データから空白行を除いた値を取り出せます。

  1. 作業列で値がある行の番号を取得
    • IF関数を使って、値が入力されているセルにのみ行番号を振ります。
    • 例: =IF(B2="","",ROW())
  2. INDEX関数で空白行を詰める
    • 次に、SMALL関数が返す行番号を使って、空白行を除いた値を抽出します。
    • 例: =INDEX(B:B,SMALL($A$2:$A$5,ROW(A1)))

この数式を下のセルにオートフィルでコピーすると、空白を除いた値が抽出できます。


さらに詳しい解説は、「空白を削除する方法 」をご参照ください。

タイトルとURLをコピーしました