ExcelのMATCH(マッチ)関数とは何かご存知でしょうか?IF関数やSUM関数と比較すると、あまり聞き馴染みがないかもしれません。MATCH関数というのはデータ検索用の関数です。
何百、何千とあるデータの中から該当するデータの行数、列数を求めることができます。この記事では、MATCH関の使い方を解説していきます。
記事の後半では、他の関数と組み合わせる応用編や、エラーが発生した時の対処法も解説しているので、ぜひ最後まで見てみてください。
目次
Excel MATCH(マッチ)関数とは
ExcelのMATCH関数は上述の通り、データ探索用の関数です。MATCH関数を入力したセルに該当行(列)番号を返します。Excelでは、CtrlキーとFキーを同時に押すことでシート内検索モードにすることができます。
このモードは、調べたいワードを入力するだけで該当のセルにジャンプしてくれる便利な機能ですので、「データ検索なら間に合ってるのに、何のためにMATCH関数があるのだろう」と疑問に思う方もいるでしょう。
Ctrl + FキーとMATCH関数との決定的な差は、「セルにジャンプするか」、「数値が返ってくるか」です。単にシート内のどこにあの文字があったか調べたい時は、Ctrl + Fキーの方が早くて便利なのでおすすめです。
では次の場合はどうでしょう。「〇〇という文字が上から何番目にあるか調べたい。」こんな時は行数を返してくれるMATCH関数でなければ調べられません。
Ctrlキー + Fキーの同時押しではセルにジャンプするだけですので、いちいち手で数えていかなければならないのです。
Excel MATCH関数の書き方
ここからは、ExcelのMATCH関数の書き方を解説していきます。書き方は以下のようになります。
=MATCH(検索値,検索範囲,照合の種類)
実際に式にしてみるとこのような形で、下記の画像で”品川”という文字が上から何行目に当たるか検索しています。品川はA5セルに該当し、上から5行目ですので、ちゃんと結果が出力できていることがわかります。
=MATCH(A5,A1:A9,0)
Excel MATCH関数の引数と方法
ExcelのMATCH関数がどのような関数で、どんな結果を返すのかわかったところで、次は数式の解説をしていきます。
MATCH関数は引数が必要な関数です。つまり、かっこの中に範囲や条件などの様々な記述をしなければなりません。MATCH関数で使う引数を一覧で見ると以下のようになります。
検索値…検索に用いる条件値
検索範囲…条件に合致する値を探すセルの範囲
照合の種類…1 以下
0 一致
-1 以上
上述した通り、MATCH関数は、=MATCH(検索値,検索範囲,照合の種類)という書き方をしますので、順番に引数の説明をしていきます。
①検索値
まずは「検索値」です。これは「何を探すか」と言い換えることができます。「”品川”という文字列」、「6000という数字」、「◯という記号」、パソコンのキーボードから打てる文字であれば何でも指定して検索することができます。
検索値は文字列を入力するか、文字列がすでに入ったセルを指定するかのどちらかになります。MATCH関数の引数に直接文字列を入れる際は、必ず半角のダブルクォーテーションマーク(” ”)で囲みましょう。出ないとExcelが文字列だと判断できなくなり、「NAMEエラー」が発生します。
(例: =MATCH(“品川”,A1:A9,0) )
もう1つの検索値指定方法は、すでに情報を入れた「セル」を引数に指定することです。A5セルにすでに品川と書いておき、=MATCH(A5,A1:A9,0)という記述をすることで検索値を指定できます。セルを引数に指定する場合は、ダブルクォーテーションマーク(” “)が不要になります。
②検索範囲
次に検索範囲です。これは読んで字の如く、どこからどこまでのセルを検索するかを引数として指定します。基本的にセルをドラッグして一気に範囲選択してしまうのがおすすめです。f4キーを押すことで絶対参照にすることもできるので、「このあとオートフィルをするから絶対に検索範囲を動かしたくない」という方は、絶対参照($)を付けましょう。
ここでポイントなのが、検索範囲は状況に応じて変える必要があるということです。というのも、上の画像ではA1〜A9までを指定することで上から5行目を示す”5”が入っていますが、「品川は上野から数えて上から何番目?」という条件を設定したい場合はどうでしょう?
この場合は、検索範囲をA3〜A9セルに変えることで処理を実現できます。
③照合
最後に照合の種類です。照合は「以下」を示す”1”、「完全一致」を示す”0”、「以上」を示す”-1”の3種類のどれか1つを引数として指定する必要があります。MATCH関数では、「〇〇という文字と一致したら」という条件を指定する際は「一致」の”0”を使います。もしも「上野」という文字が複数セルに渡って存在していた場合、1番上のセルの位置が返されます。では「以上」と「以下」はどのように使うのかと言うと、あいまいに検索する場合です。「以下」を表す”1”を指定すると検索値以下の最大値の位置を返してくれます。その場合、検索範囲を昇順(小さい方から大きい方へ)に並び替える必要があります。逆に「以上」を表す”-1”を指定すると検索値以上の最小値の位置を返してくれます。その場合、検索範囲を降順(大きい方から小さい方へ)に並び替える必要があります。
検索値、検索範囲、照合の種類の3つを正しく引数に設定すると、以下のような表を作成することができます。
Excel MATCH関数の応用
MATCH関数の基本的な使い方は、引数を指定して行数を表示させるというものが一般的です。いざ仕事で使うとなると、どんな場面で使われているのか気になりますよね。実践的な使用例を解説していきます。
Excel MATCH関数のあいまい検索
Excelのワイルドカードという言葉を聞いたことがあるでしょうか?ワイルドカードとは、アスタリスク(*)とクエスチョン(?)の2つです。この2つは、MATCH関数で「〇〇を含む」という条件を指定したいときに有効です。
検索値を記述する際、下記画像のように、ワイルドカードを付けてあげるとあいまい検索が可能になるのです。
「*」(アスタリスク)
完全に一致する文字ではなく、上記画像のように「川」がつく都市名を指定したい場合は「川*」とすれば、「川」以降の文字数が不確定でも指定することができます。このカウント方法は、アスタリスクをつける場所で指定条件が異なるので注意が必要です。たとえば、「川*」とアスタリスクを後ろにつけることで「川」で始まる文字列、「*川」とアスタリスクを前につけることで「川」で終わる文字列を指定することが出来ます。
「?」(クエスチョン)
「川で始まる2文字の都市名」など、指定したい特定の文字の数が決まっている場合は「?」(クエスチョン)を使用します。書式はアスタリスクのときとほとんど同じです。
つまり、アスタリスクは何文字分でも代用でき、クエスチョンは1文字文の代用になります。
表にまとめたものが以下になります。
記述方法 | 検索にヒットする文字列 | |
全検索 | *川* | 川越、本川越、品川、高麗川、川崎大師 |
?川? | 本川越 | |
前方一致検索 | *川 | 品川、高麗川 |
?川 | 品川 | |
後方一致検索 | 川* | 川越、川崎大師 |
川? | 川越 |
上記のように、アスタリスクは多くのキーワードを拾ってくるため「あいまい検索」に向いています。一方、クエスチョンは1文字の代用になるため、「さらに絞り込めるあいまい検索」に向いています。
Excel MATCH関数と他の関数を組み合わせる
MATCH関数を他のExcelの関数と組み合わせると、どんな結果を出力できるでしょうか?
INDEX(インデックス)関数
まずは、MATCH関数と組み合わせることの多いINDEX関数を紹介します。
ExcelのINDEX関数とは、指定した行と列が交差する位置にあるデータを抽出することができる関数です。このINDEX関数とMATCH関数を組み合わせることで、より柔軟な検索が可能になります。
INDEX関数とMATCH関数を組み合わせてデータを抽出するには、
①MATCH関数を用いて、目的のデータが表の行または列の何番目に位置するのかを検索し、数値として取得します。
②取得した数値をINDEX関数の行または列に指定します。
こうすることで、目的のデータを検索して抽出できます。
INDEX関数の書式はこのようになります。
『=INDEX(配列, 行番号, 列番号)』
つまり、MATCH関数を組み合わせる際は、INDEX関数の行番号のところをMATCH関数に置き換えればいいのです。
画像を用いて説明していきます。
下記の画像では、「駅名」「家賃相場」が書かれた表1の内容を用いて、表2の「駅名」から「家賃相場」を検索して表示させようとしています。
下記画像のように、INDEX関数とMATCH関数を組み合わせることで、家賃相場を表に記載すると、対応する駅名が表示されるようになりました。
任意の家賃相場の検索に対応しているため、C11セルの家賃相場を「500000」から
「600000」に変更とすると、駅名に対応する「東京」が表示されます。
VLOOKUP(ブイ・ルックアップ)関数
次に、VLOOKUP(ブイ・ルックアップ)関数と組み合わせてみましょう。
そもそも、VLOOKUP関数とは、表を縦方向に検索して特定のデータに対応する値を取り出すExcelの関数です。
VLOOKUP関数の書式はこのようになります。
『=VLOOKUP(検索値, 検索範囲, 参照する列番号, 検索方法)』
VLOOKUP関数とMATCH関数を組み合わせたときの書式はこのようになります。
『=VLOOKUP(検索値, 検索範囲, MATCH関数, 検索方法)』
下記の画像では、MATCH関数とVLOOKUP関数を組み合わせて使うことで、該当の駅の家賃相場を出力しようとしています。VLOOKUP関数の列指定の引数にMATCH関数を使ってあげるのです。
このMATCH関数の部分は、(検索値, 検索範囲, 検索方法)になっています。
すると以下のように400000という値が出力されます。
INDEX関数とMATCH関数を組み合わせてVLOOKUP関数にする
次にINDEX関数とMATCH関数を組み合わせて、VLOOKUP関数と同じ動きをさせる方法をお伝えします。この組み合わせをすることで、好きな列から検索できるようになります。
=INDEX(実際に求める値の範囲,MATCH(検索値,検索する値の範囲,0))
以上の方法で求めることができます。
Excel MATCH関数でエラーが発生したら
「ExcelでMATCH関数の数式を記述していたら、変なローマ字が出てきた」そんな経験はありませんか?ここからは、MATCH関数でよくありがちな2つのエラーについて解説していきます。
「#N/A」エラー
ExcelのMATCH関数でありがちなエラー1つ目は、「#N/A」エラーです。検索した結果、該当するものがなかった場合に表示されるエラーです。ちなみに”ノーアサイン”エラーと読みます。確かに検索に当てはまる文字は存在するはずなのにこのエラーが出ている場合は、引数指定(検索範囲)が間違っている可能性があるので注意深く見直してみましょう。
「#NAME?」エラー
ExcelのMATCH関数でありがちなエラー2つ目は「#NAME?」エラーです。ネームエラーは、検索値を指定する際にダブルクォーテーションマーク(” ”)で囲んでいないのが原因です。ダブルクォーテーションマークが不要になるのは、セル番号を入力した時だけです。したがって、検索値が文字、数値、記号のいずれの場合でも、ダブルクォーテーションマークを忘れずつけることを習慣付けましょう。
まとめ
いかがだったでしょうか?ExcelのMATCH関数は、条件に合致した行や列番号を返してくれる関数です。引数は検索値と、検索範囲と、照合の種類を記述するだけです。この関数とVLOOKUP関数やINDEX関数のような他の関数を組み合わせることで、さらに便利なシートを作成することができます。MATCH関数を利用するときに発生するエラーは主に2種類で、検索結果が見つからない、検索範囲が間違っている場合によく見られる「#N/A」エラーと、検索値の記述ミスによる「#NAME?」エラーです。エラー原因がわかっていれば対処しやすいと思うので、ぜひ本記事を参考にしてみてください。