Excel(エクセル)INDEX関数とMATCH関数を組み合わせたデータの抽出方法

 ExcelのINDEX関数とMATCH関数は、組み合わせることでデータの検索や抽出が簡単にできます

 INDEX関数は、指定した範囲から任意のセルの値を返す関数です。MATCH関数は、指定した値と一致する最初のセルの位置を返す関数です。これらの関数を組み合わせると、横方向と縦方向に検索条件を指定して、目的のデータを取得できます。

 この記事では、INDEX関数とMATCH関数の使い方や実際の例題、INDEX MATCH関数と同様の役割を果たすVLOOKUP関数との違いについても詳しく解説します。

INDEX MATCH関数 検索 イメージ画像

INDEX関数とは

 INDEX関数は、指定した行と列が交差する位置にあるセルの内容を返す関数です。具体的な書式は以下の通りです。

=INDEX (配列, 行番号, [列番号])

配列:データを抽出する範囲

行番号:配列の中で何行目か

列番号:配列の中で何列目か

 例えば、=INDEX(B2:D5,3,2)という式は、「B2からD5までの範囲の中で、3行目と2列目が交差する位置」にあるデータを返します。

=INDEX (配列, 行番号, [列番号])の例

=INDEX(B2:D5,3,2)

MATCH関数とは

 MATCH関数は、指定した範囲内で探したい数値や文字列がどの位置にあるかを列・行番号で返す関数です。具体的な書式は以下の通りです。

=MATCH (検査値, 検査範囲, [照合の種類])

検査値:検索する値

検査範囲:検索する範囲

照合の種類:検索方法

 

照合の種類は以下の3つです。

0

[検査値]と完全に一致する値のみを検索します。

1

[検査値]以下の最大値を検索します。この場合、[検査範囲]は昇順に並べておく必要があります。

-1

[検査値]以上の最小値を検索します。この場合、[検査範囲]は降順に並べておく必要があります。

 例えば、=MATCH("ぶどう",C2:C5,0)という式は、「C2からC5 の範囲で、"ぶどう"が何行目にあるか」を返します。

=MATCH (検査値, 検査範囲, [照合の種類])の例

=MATCH("ぶどう",C2:C5,0)

 [検査値]が何行目にあるかを探す場合、[検査範囲]の列を以下の画像のように2列以上を指定するとエラーになるため、注意しましょう。

MATCH関数 エラーの例

 

 "ぶどう"が何列目にあるかを調べるには、=MATCH("ぶどう",B4:D4,0)という式になります。

MATCH関数使用例

=MATCH("ぶどう",B4:D4,0)

INDEX関数とMATCH関数の組み合わせ

 INDEX関数とMATCH関数を組み合わせることで、より柔軟なデータの抽出を行うことができます。

 前述の通り、INDEX関数は指定した行と列が交差する位置にあるデータを抽出する関数で、MATCH関数は指定した検査値が検査範囲の中で何列目、もしくは何行目のセルかを求める関数です。

 これらを組み合わせることで、特定の検査値がどの行に存在するかをMATCH関数で検索し、その行の特定の列にあるデータをINDEX関数で抽出する、という処理が可能になります。具体的な書式は以下の通りです。

=INDEX (配列, MATCH (検査値, 検査範囲, 照合の種類), 列番号)

配列:データを抽出する範囲

検査値:検索する値

検査範囲:検索する範囲

照合の種類:検索方法

列番号:配列の中で何列目か

 例えば、=INDEX(B2:B6, MATCH(B8, A2:A6, 0))という式は、「B2からB6の範囲で、人気順位“3位”(B8に入力)は何か」を返します。

=INDEX (配列, MATCH (検査値, 検査範囲, 照合の種類), 列番号)の例

=INDEX(B2:B6, MATCH(B8, A2:A6, 0))

 さらに、式の中にMATCHを2つ記述することで、行と列が交差する位置にあるデータを抽出することができます。具体的な書式は以下の通りです。

=INDEX (配列, MATCH (検査値1, 検査範囲1, 照合の種類), MATCH (検査値2, 検査範囲2, 照合の種類))

配列:データを抽出する範囲

検査値1:検索する値

検査範囲1:検索する範囲

検査値2:検索する値

検査範囲2:検索する範囲

照合の種類:検索方法

 例えば、=INDEX(B2:D6,MATCH(C8,A2:A6,0),MATCH(C9,B1:D1,0))という式は、「B2からD6の範囲で、人気順位“3位”(C8に入力)の“野菜”(C9に入力)は何か」を返します。

=INDEX (配列, MATCH (検査値1, 検査範囲1, 照合の種類), MATCH (検査値2, 検査範囲2, 照合の種類))の例

=INDEX(B2:D6,MATCH(C8,A2:A6,0),MATCH(C9,B1:D1,0))

INDEX MATCH関数とVLOOKUP関数の違い

 INDEX MATCH関数と同様にデータ検索に使用される関数にVLOOKUP関数があります。

 INDEX MATCH関数は、INDEX関数とMATCH関数を組み合わせることで、検索機能を持たせ、検索列がどの列にあっても必要なデータを抽出することができます。

 一方、VLOOKUP関数は、データを縦方向に検索して、検索値に一致した値と同じ行の値を指定した列から抽出します。VLOOKUP関数の制約として、検索列を必ず表の左端にする必要があります。

 どちらの関数を使うべきかは、具体的な状況や要件によって異なります。

 INDEX MATCH関数はより柔軟性があり、検索列の位置に制約がないため、複雑な検索に適しています。ただし、関数式が長くなりやすいというデメリットもあります。

 VLOOKUP関数は使いやすく、一般的によく使われますが、検索列の位置に制約があります。したがって、より複雑な検索や、検索列の位置に制約を設けたくない場合は、INDEX MATCH関数の使用がおすすめです。

 

まとめ

 ExcelのINDEX MATCH関数は、データ検索と抽出に非常に便利な関数です。

 この記事では、INDEX関数とMATCH関数の基本的な使い方から、これらを組み合わせて複雑な検索を行う方法までを詳しく解説しました。データ検索と抽出を効率的に行うために、ぜひ活用してみてください。