EXCEL

EXCEL:INDEX関数とMATCH関数を使ってデータを効率的に抽出する方法

スポンサーリンク

 

この記事はこんな方におススメです
  • EXCELを使って業務を効率化したい方
  • EXCELでデータの前処理をしたい方

はじめに

INDEX関数とMATCH関数を組み合わせることで、柔軟で高度なデータの抽出ができるようになります。INDEX関数はデータの位置を指定し、MATCH関数は検索値の位置を見つけるのに役立ちます。この記事では、具体的な手順と例を交えて、効率的なデータ抽出の方法を解説します。

INDEX関数とは

指定した行と列が交差する位置にあるデータを抽出するために使用されます。まずは基本の書式を確認しておきましょう。

INDEX(範囲, 行番号, [列番号])
  • 範囲: データの範囲を指定します(通常はセル範囲)。
  • 行番号: 抽出したいデータが存在する行の番号を指定します。
  • 列番号: 抽出したいデータが存在する列の番号を指定します。

基本の書式は以上です。列番号は省略することもできます。「基本の」書式と表現しているのは、応用編として複数の表からデータを抽出することもでき、その場合は書式が異なるからです。今回は初めてINDEX関数を使う場合を想定して、「基本の」書式にとどめておきましょう。

MATCH関数とは

次にMATCH関数です。MATCH関数は指定した検査値が検査範囲の中で何列目、あるいは、何行目のセルかを求める関数です。書式を確認しておきましょう。

MATCH(検査値, 検査範囲, [一致の種類])
  • 検査値: 検索したい値を指定します。
  • 検査範囲: 検索対象の範囲を指定します。
  • [一致の種類]: オプションです。
    • -1:検索値以下の最大値を検索
    • 0:検索値と完全一致する最初の値を検索
    • 1:検索値以上の最小値を検索

「一致の種類」はオプションですが、複数の値が一致する場合には、どの値を抽出したいかによってオプションを指定する必要があります。

MATCH関数で取得した行番号や列番号は、検索範囲内における番号です。シート内での絶対的な番号ではないので注意しましょう。

INDEX関数とMATCH関数を組み合わせてデータを抽出する方法

INDEX関数とMATCH関数を組み合わせることで、特定の検査値がどの行に存在するかをMATCH関数で検索し、その行の特定の列にあるデータをINDEX関数で抽出する、という処理もできます。その場合の所式は以下となります。

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

まずは、複雑にならないケースとしてMATCH関数で取得した行番号と、特定の列番号を指定してINDEX関数でデータを抽出しています。MATCH関数は検索範囲の指定の仕方で行番号ではなく列番号の取得することも可能なので、次の書式のように使うこともできます。

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

実際にやってみましょう。次のようなどうぶつの所属動物園と出身国のデータを使ってみましょう。

動物たちの「動物園」と「出身国」

まずは「名前」が「ねこ」であるデータの「動物園」を抽出してみましょう。MATCH関数で「名前」が「ねこ」となる行番号を抽出して、列は3列目を指定すればよいですね。

MATCH関数で「ねこ」の行番号を取得してINDEX関数でデータを抽出

すると「ねこ」の出身国である「日本」が抽出できます。次に列についても検索して列番号を取得することにしましょう。

今度は「名前」が「らくだ」で「動物園」の情報を取得してみましょう。列番号もMATCH関数で検索することにしましょう。

match関数で「らくだ」の行番号と「動物園」の列番号を取得してINDEX関数でデータを抽出

上記では、らくだの行番号が2で動物園の列番号が2となるので、「旭山動物園」が抽出されます。ただ、このような使い方はあまりしません。実際、INDEX関数の第3引数は任意となっていますよね。基本的には行番号を取得して、ある特定の列の値を抽出する、という使い方をします。

なので上の式では、取得したいデータが動物園なのであれば次のように書くのが自然です。

列番号ではなくINDEX関数の「範囲」で取得したい列を指定する

これでも同じ結果を得ることができます。このようにINDEX関数とMATCH関数を組み合わせれば条件に合致する行番号をMATCH関数で取得して特定の列のデータを取得することができます。VLOOK関数でも同じようなことができますが、「VLOOK関数では検索値が検索範囲の中で一番左になければならない」という制約があるのに対して、このINDEX関数とMATCH関数の組み合わせでは検索地の左側のデータも取得することができます。

スポンサーリンク

まとめ

INDEX関数とMATCH関数を組み合わせると、INDEX関数とMATCH関数を組み合わせることで、検索機能を持たせ、検索列がどの列にあっても必要なデータを抽出することができます。INDEX関数とMATCH関数の組み合わせによるデータ抽出は、VLOOK関数では扱うことが難しい複雑な条件でも比較的簡単にデータを取り出せる柔軟性があります。是非とも身に着けておきましょう。

コメント

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