K-fix Learning & Playing

22 MATCH, INDEX関数


MATCH関数は、指定した範囲(検査範囲)内で、特定の値(検査値)が最初に現れる位置を検索し、その相対的な位置を返す関数で、データ分析やVLOOKUP関数との組み合わせなど、様々な場面で活用できます。書式は以下の通りです。

「検査値」: 検索したい値を指定します。数値、文字列、セル参照など、様々なデータ型が可能です。
「検査範囲」: 検索対象となるセル範囲で、検査値が存在する可能性のある範囲を指定します。
「照合の種類」: 検査値と検査範囲の照合方法を指定します。以下の3種類があります。

  • 0 (完全一致):検査値と検査範囲の値が完全に一致する必要があります。
  • 1 (検査値以下の最大値):検査値以下の最大の値を検索します。検査範囲は「昇順」に並べ替えておく必要があります。
  • -1 (検査値以上の最小値):検査値以上の最小の値を検索します。検査範囲は「降順」に並べ替えておく必要があります。

照合の種類によっては、検査値が見つからない場合、エラー値 #N/A が返されます。また、ワイルドカード文字を使用することはできません。
例えば、「=MATCH("営業部",B2:B10,0) 」の数式では、B2からB10までの部署名に「営業部」が上から何番目に存在するかを返してくれます。

INDEX関数は、指定された配列(参照範囲)から、行と列の番号に基づいて特定の値を取得する関数です。書式は以下の通りです。

「配列」:値を取得したいセル範囲を指定します。
「行番号」:取得したい値の行番号を指定します。
「列番号」:取得したい値の列番号を指定します。
「領域番号」:参照範囲内で特定の範囲を指定するために使用します。参照範囲の配列が1つの場合は省略です。

例えば、数式「=INDEX(A1:B10, 5, 2)」は、A1からB10までの範囲で上から5番目(行番号)、左から2番目(列番号)のセルの値を返します。要は、行番号と列番号が「交差するセル」の値を取得します。

インデックス関数の領域番号

上図には2つの参照範囲(配列)が存在します。YとCが交差している数値を取得する場合、「=INDEX((B3:D5,G3:I5),2,3,1)」であれば結果は「600」が返され、「=INDEX((B3:D5,G3:I5),2,3,2)」だと結果が「1200」が返されます。これら数式の第4引数の領域番号が1であれば左の参照表、2なら右の参照表が指定されます。

基本的にINDEX関数は行番号と列番号はMATCH関数と組み合わせます。また、MATCH関数をVLOOKUP関数の第3引数の列番号で利用すると、より効率的に数式のコピーが可能となります。