【エクセル中級者向け】VLOOKUP関数やINDEX関数をより便利に使うために必須!MATCH関数の使い方
AさんAさん

エクセル関数にだいぶ慣れてきましたが、覚えておいた方が良い関数ってありますか?
ちなみに、よくVLOOKUP関数を使うことが多いです。

森田森田

VLOOKUP関数を使うことが多いなら、MATCH関数も覚えておくと良いですね!
MATCH関数は任意のキーワードが、指定した行(列)の中で左(上)から何番目かを教えてくれる関数です。
他の関数と組み合わせることで、もっと作業を効率化できますよ!
では、具体的に解説していきましょう。

おすすめな人

本題に入る前に、この記事がおすすめな人を挙げてみます。

  • VLOOKUP関数やINDEX関数を使う頻度が高い人
  • エクセルを使う頻度が高い人
  • 事務職の人、目指している人

MATCH関数とは?

読み方はマッチ関数と読みます。

関数名の”MATCH”は「一致」を意味する英単語から来ていると推測されます。(Microsoftの公式見解なし)

数式ライブラリ上のカテゴリは「検索/行列」です。

MATCH関数は、任意のキーワードが、指定した行(列)の中で左(上)から何番目かを数値で返してくれます。

MATCH関数が必要な時点で「中級」レベル!

MATCH関数は、数式の構成がVLOOKUP関数に似ているため、VLOOKUP関数が使える人ならすぐに覚えることができると思います。

また、主にMATCH関数はVLOOKUP関数やINDEX関数などと組み合わせて使うことが多く、MATCH関数を使う必要がある時点で中級以上のレベルだと言えますね。

ちなみに、エクセルのもっとも有名な資格であるMOS(マイクロソフトオフィススペシャリスト)は一般レベルの「スタンダード」と上級レベルの「エキスパート」の2つの難易度がありますが、MATCH関数はどちらにも出題されておりません。

しかし、VLOOKUP関数やINDEX関数との組み合わせることで、かなり応用範囲が広がるため、一定以上のレベルに達するエクセル関数使いには必須の関数といえますね。

事実、私は実務でかなりお世話になっていますよ!

MATCH関数が活躍するのは、他の関数との組み合わせ!!

では、実際にこのMATCH関数が活躍するシーンを確認していきましょう。

MATCH関数は指定したキーワードが行(列)内の何番目のセルかを調べるのに最適です!

たとえば、次の表のA1~E1の中で、”名”という値は左から何番目かをMATCH関数を用いて求めてみましょう。

結果、指定した”名”というキーワードが選択範囲の中では左から3番目のため、MATCH関数の戻り値が”3”だと教えてくれますね。

ただし、正直単体で使うケースはあまりありません。

私は、主にVLOOKUP関数やINDEX関数、OFFSET関数と組み合わせで使うことがほとんどです。

たとえば、VLOOKUP関数でいうと以下のような場合です。

こちらは、VLOOKUP関数の引数「列番号」にMATCH関数を組み合わせると、通常は列ごとで数式を微修正しなければならないものが、同じ数式をコピペで済ませることが可能になりますね。

こちらのテクニックの詳細は以下をご参照ください。

このように、VLOOKUP関数などの検索/行列関数の検索性能をアップしてくれる名脇役な関数です。

中級者以上は絶対に覚えた方が良いので、この記事をとおしてぜひ身につけることをおすすめしますよ!

MATCH関数の構文を理解しよう!

MATCH関数を記述する際の構文は次のとおりです。

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

※引数名を[]で囲っているものは省略可能

カッコ内の各引数は次のとおりです。

引数

引数名 必須 データ型 説明
検査値 どの型でも可 検索したいキーワードを指定します。

キーワードは数値でも文字列でも何でも指定できます。

検査範囲 セル範囲 参照したいセル範囲を指定します。

なお、この指定範囲は必ず1行か1列のどちらかでないといけません。

また、この指定範囲に必ず引数「検査値」の値が入っている必要があります。

照合の種類   “1” or “0” or “-1” “1”、“0”、“-1”のいずれかを指定します。

詳細は以下で解説します。

なお、引数「照合の種類」を省略すると”1”として扱われます。

なお、「データ型」とは、その引数に指定できるデータの形式を指します。

指定外のデータ形式を指定すると、関数の戻り値(返り値)はエラーとなりますのでご注意ください。

この「データ型」を把握していると、不要なエラーを回避したり、他の関数と組み合わせる際に役立ちますよ。

ちなみに、MATCH関数自体の戻り値(返り値)は「数値」となり、引数「検査値」が見つからない場合はエラー値”#N/A”となります。

引数「照合の種類」による検索方法の違い

MATCH関数の引数「照合の種類」は、VLOOKUP関数の引数「検索方法」(VLOOKUP関数の引数の中で最後にあるもの)とほぼいっしょです。

照合の種類 検索方法 動作
1
※省略した場合も含む
近似一致 MATCH 関数は、「検査値」の引数の値以下のものから最大の値を検索します。

引数「検査範囲」に指定した行・列の中の値は昇順である必要があります。

例)1→9、A→Z、あ→ん、FALSE→TRUE

0 完全一致 MATCH 関数は、「検査値」の引数の値と等しい最初の値を検索します。

引数「検査範囲」に指定した行・列の中の値は任意の並びで問題ありません。

-1 近似一致 MATCH 関数は、「検査値」の引数の値以上のものから最小の値を検索します。

引数「検査範囲」に指定した行・列の中の値は降順である必要があります。

例)9→1、Z→A、ん→あ、TRUE→FALSE

私の場合は、基本的にVLOOKUP関数やINDEX関数と組み合わせる際にMATCH関数を使うため、完全一致検索となる”0”を使うことしかないですね。

念のため、近似一致の”1”と”-1”についても簡単に解説しておきます。

MATCH関数の2つの近似一致検索の違い

こちらは少々ややこしいため、「自分は完全一致でしか使わない!」という人は飛ばしてください(笑)

では、解説していきますね。

“1”の場合

先ほどの引数「照合の種類」の表の説明文を引用します。

MATCH 関数は、「検査値」の引数の値以下のものから最大の値を検索します。
引数「検査範囲」に指定した行・列の中の値は昇順である必要があります。
例)1→9、A→Z、あ→ん、FALSE→TRUE

こちらは、VLOOKUP関数の引数「検索方法」が”1”の場合と同じですね。

百聞は一見にしかず。サンプルを見ていきましょう。

九九の答えである”15”を引数「検査値」にした場合、1~9の各段の「掛ける数」を自動計算するようにしたMATCH関数は以下のとおりです。

たとえば、2の段であれば、”7”がMATCH関数の戻り値ですね。

こちらは、引数「監査値」の値”15”以下で最大のものが2の段だと”14”なので、「掛ける数」は”7”になりました。

「「検査値」の引数の値以下のものから最大の値」というルールどおりだと確認できますね。

 “-1”の場合

では、こちらも、先ほどの引数「照合の種類」の表の説明文を引用します。

MATCH 関数は、「検査値」の引数の値以上のものから最小の値を検索します。
引数「検査範囲」に指定した行・列の中の値は降順である必要があります。
例)9→1、Z→A、ん→あ、TRUE→FALSE

こちらは、VLOOKUP関数の引数「検索方法」にはない値ですね。

では、サンプルを見ていきますが、先ほどのサンプルと九九の並びを逆にしなければなりませんので、ご注意ください。

では、九九の答えである”15”を引数「監査値」にした場合、1~9の各段の「掛ける数」を自動計算するようにしたMATCH関数は以下のとおりです。

たとえば、2の段であれば、”2”がMATCH関数の戻り値ですね。

こちらは、引数「検査値」の値”15”以上で最小のものが2の段だと”16”なので、「掛ける数」は”8”になりました。

しかし、MATCH関数の仕様上、引数「検査範囲」を行で指定すると左から何番目かをカウントされますので、この「掛ける数」の”8”は左から2番目にあるので、MATCH関数の戻り値としては”2”になったわけですね。(ややこしい汗)

以上を持って、こちらも「「検査値」の引数の値以上のものから最小の値」というルールどおりだと確認できますね。

サンプルファイルで練習しよう!

では、実際にMATCH関数を使ってみましょう!

サンプルの条件

今回の題材は次のとおりです。

「九九」というシートに九九が一覧表になっています。

縦の軸が1~9の段、横の軸が掛ける数です。

このシートのJ12セルに九九の答えを入れるセルがあり、その答えが1~9の段のどの「掛ける数」に該当するかを確認するためにMATCH関数を使うとします。

各段のMATCH関数をL列に設定しましょう。

実際に操作しよう!

可能であれば、以下のサンプルファイルをダウンロードして実際に操作してみてください。

サンプルファイル_MATCH関数
※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)

ファイルを開いたら次の手順を実施してください。

  1. 「九九」シートを選択
  2. L2セルへ「=MATCH($J$12,$B2:$J2,$J$14)」を入力
    ※赤字の部分をコピーして貼り付けてください。
  3. L2セルをコピー
  4. L3~L10へ貼り付け(ペースト)

上記手順を行った結果は「九九 (関数あり)」シートにありますので、このシートの内容と実際に操作した結果が同じなっていればOKです。

J12セルの九九の答えや、J14セルの引数「照合の種類」を切り替えて、MATCH関数の戻り値がどう変わるかも確認してみましょう!

MATCH関数のポイント

最後に今回のテクニックの2つのポイントについて解説していきましょう。

【POINT1】引数「検査範囲」は必ず1行か1列にする

これが意外とエラーになってしまう原因ですね。

特に、表の見出しを結合している場合などは自動的に2行以上がMATCH関数の範囲になってしまい、知らず知らずのうちにエラーになってしまう原因となります。

この場合、必ず数式上の範囲を1行か1列になるように数式バーの中で直接範囲を修正しちゃいましょう。

【POINT2】引数「照合の種類」が”0”なら、引数「検査値」にワイルドカードも使用可能

こちらは応用テクニックですね。

完全一致となる引数「照合の種類」が”0”の場合は、引数「検査値」にワイルドカードも使用可能です。

ちなみに、ワイルドカードとは、”?”[クエスチョンマーク]や”*”[アスタリスク]ですね。

ワイルドカード文字の”?”[クエスチョンマーク]は任意の1文字を表し、”*”[アスタリスク]は 1 文字以上の任意の文字列を表します。

使用例は以下のとおりです。

この例では、引数「検査値」を“宮?県”としているため、今回はMATCH関数の範囲内で左から6番目にある”宮城県”がHITしていますね。

こちらは、”?”[クエスチョンマーク]は1文字分ならどの字にも代替できますので、仮に”宮崎県”であった場合でもHITしますよー!

MATCH関数と相性の良い関数

散々MATCH関数を紹介してきましたが、まとめとして相性の良い関数との組み合わせテクニックを解説した記事のリンクを張っておきます。

ご参考まで。

さいごに

MATCH関数は中上級者ほど使いこなしている玄人感満載な関数のひとつです。

私もかなり日常的に使っているので、大変お世話になっています(笑)

ただ、慣れてしまえば、そこまで難易度が高くないので、ぜひとも作業を効率化したい方は覚えておきましょうね。

ご参考になれば幸いですm(_ _)m

森田森田

私がMATCH関数と出会ったのは、VLOOKUP関数の引数「列番号」をいちいち手作業で数式を書き換えるのが面倒で、何か良い方法がないかを調べまくったことがきっかけでした。
最初はとっつきにくかったですが、一度覚えてしまうとやみつきになりますよ(笑)