MATCH(マッチ)関数は、一行または一列の範囲から、条件に適合する位置が何番目にあるのか、または何番目までなのか? を数字で指定してくれます。

【構文】

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

【使用例】

  • =MATCH("榊裕次郎", B2:B10, 0)
    セルB2~B10には名簿リストがあり、その中で「榊裕次郎」と記載のあるデータを探します。セルB5にあった場合、MATCH関数では「4」と出力されます。
  • =MATCH(30000,D2:D10,-1)
    セルD2~D10には、アルバイトの人たちの各売上金額が入力されており、降順でデータが並び替えされています。30000円以上の売り上げを出した人にはボーナスを支給するため、何人クリアしたかを算出します。D5が「32000円」D6が「28000円」だった場合、「4」と出力され、4人分のボーナスを準備すればいいことがわかります。
  • =MATCH(30000,D2:D10,1)
    上記例の逆になります。セルD2~D10まで昇順でデータを並び替えて、D7が「28000円」D8が「32000円」となった場合、「6」と出力されます。つまりボーナスを獲得できなかった人数は6人ということがわかります。

MATCH関数はVLOOKUP関数の救世主としても使うことができて、私はとっても感謝している関数です。ただ、単体で使うことはあまりなく、どうしてもMATCH関数を使う数式は複雑になりがちなので、必ずコメントやメモ機能を使って、どういうことをしているのか、チームで共有できるよう説明書きを入れておくことをおすすめします

関数説明

この関数は、第3引数が覚えにくいので3つの例でご説明します。

MATCH関数は[数式]タブ→関数ライブラリの中の[検索/行列]にあります。

第3引数を「0」で使用するケース

以下の範囲で、「Shiori Soma」さんが上から何番目にあるのか? をカウントします。

検査値:Shiori Soma
検索範囲:D3:D9
照合の種類:0

結果は選択範囲の「Yuka Mizouchi」さんから数えて「6」番目と出力されます。

第3引数を「0」にして使用する場合は、完全一致する場合に扱うため利用頻度は最も高いです。

第3引数を「-1」で使用するケース

以下の表で、180,000円以上の売り上げを出した人は何人いるのかを求めてみましょう。

まず、表に対してMATCH関数を使用する準備を行います。売上データ「Total JPY」の列を「降順」に並び替えをします。

MATCH関数は、以下の入力を行います。

検査値:180000
検査範囲:E3:E9
照合の種類:-1

データ位置は「3」となりました。

この照合は、上から数えて3番目という意味となります。そのため、データを降順に並び替えをしておかないと、うまく探せない仕組みのため#N/A(ノーアサイン)エラーが出力されます。

第3引数を「1」で使用するケース

最後に1で使用するケースです。前述の逆なので、細かいキャプチャは割愛します。

検査値:180000
検査範囲:E3:E9
照合の種類:1

この場合、180,000円以下の人は何人か? を数えることができます。

「数える」というと語弊があるかもしれませんが、180,000円までのデータを探し、選択した範囲の上から何番目か? を知らせてくれます。

第3引数を「-1」「1」で使用するケースは、事前にデータの「降順」・「昇順」の並び替え操作が必要であることを覚えておいてください。

さえちゃんのMATCH関数ワンポイントアドバイス

VLOOKUP関数で参照しているデータ範囲のカラムが変動する場合、MATCH関数を使うことで回避することができます。

普通にVLOOKUP関数を使うとこのようになります。

ただ、誰かがAとBの列の間に別のカラムを挿入した場合、VLOOKUP関数は変わらず2列目を選択します。B列を挿入したとしても、VLOOKUP関数の第3引数は「2」のままだからです。

相対参照のように「3」とはなってくれないんですね。

この列番号をMATCH関数で回避します。列番号に「MATCH()」と入力します。

数式バーでMATCH()のかっこの中をクリックしましょう。「MATCH()」の文字列内であればどれでも構いませんが、正確な操作はかっこの中がベストです。

引数ダイアログがMATCH関数に切り替わります。

「Name」という見出し番号を取得するため、このように入力します。

VLOOKUP関数に戻ります。関数に関数を入れる操作のことを、ネストというのですが、これがネスト操作になります。数式バーで引数ダイアログを切り替えます。

そしてポイントは、一番外の関数でOKボタンをクリックする、ということです。

これで名前の列をしっかり取得することができました。

列を削除してもきちんとVLOOKUP関数の列番号はName列を取得してくれます。

このデータはどこにあるか? VLOOKUP関数のみならず、MATCH関数はこのようにしてほかの関数をサポートする役目があります。

アイデア次第で困難なワークシートを改善してくれるので、絶対に覚えておきたい関数ですね。

関数ステータス

関数ライブラリの種類

検索/行列

数式の構文

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

引数ダイアログ

Microsoft 公式サポート

MATCH関数 - Office サポート