これまでの記事でも何回か出てきた「MATCH」関数についてご紹介します。
「INDEX」関数との組み合わせとして例示されることが多く、「Excel VLOOKUP関数(3)」でご紹介した「VLOOKUP」関数の制約を解除するすために使われますが、今回は「MATCH」関数だけについてご紹介します。

「MATCH」関数は、指定されたセル範囲を検索し、見つけたらそのセルの相対的な位置を返します。
検索する方向は行方向・列方向どちらでも指定できます。

書式は
 MATCH(検査値, 検査範囲, [照合の種類])
となります。

下図の表データを使ってみます。

 

A12セルに「=MATCH("秋山 瞬",B2:B10,0)」と入力すると「5」と表示されます。
つまり、B2~B10のセル範囲の中に「秋山 瞬」という文字列があるか検索し、見つけたらそのセル範囲における何番めのセルであったかを返します。

第3引数は「照合の種類」として

  • 1 - 以下
  • 0 - 完全一致
  • -1 - 以上

を指定するもので、省略したときは「1」と見做されます。

上の例では「0」を指定し「完全一致」モードで検索しました。
照合の種類が「0」で検査値が文字列の場合は、疑問符「?」やアスタリスク「*」をワイルドカード文字として使用できます。
A12セルに「=MATCH("秋山*",B2:B10,0)」と入力しても「5」と返されます。

該当するものが複数ある場合には、最初にヒットしたセルの相対位置を返します。
見つからないときはエラー値「#N/A」を返します。

第3引数に「1」を指定すると、検査値が数値のときは検索値以下の最大の値を該当セルとしてその相対位置を返します。
ただし、セル範囲は昇順に並べ替えておく必要があります。
上の表データの「誕生年」について検索してみましょう。
A12セルに「=MATCH(1950,D2:D10,1)」と入力すると「#N/A」エラーとなります。
この「誕生年」列で昇順に並べ替えてから改めて MATCH関数を適用してみると「3」と表示されます。(下図)

 

数値「1950」以下で最大のものは「1945」ですので「3」番めのセルであると返してきました。

第3引数が「-1」である場合も同様ですが、この場合は“降順”に並べ替えておく必要があります。

「1」あるいは「-1」での照合は数値だけではなく、文字列なども対象とすることができます。
その文字コードにより“昇順”“降順”とするだけです。
なお、「0」(完全一致)ではこれらの並べ替えは不要です。

注意点としては、MATCH関数では、英字の大文字と小文字は区別されません。