Excel 関数 PR

MATCH関数で#N/Aエラー・#VALUE!エラー・#REF!エラーになる原因を解説

内容に広告・プロモーションを含みます

MATCH関数を使用してデータ抽出をしたいのに「#N/Aエラー・#VALUE!エラー・#REF!エラー」が表示されて困っていませんか?
早くデータ検索をして分析や作業に取り掛かりたいのにエラーになると困りますね。
今回はMATCH関数でエラーになる原因をご紹介します。
あなたのエラーも該当するかも。

この記事で学べること

MATCH関数でエラーになる原因がわかる

それでは実際に学んでいきましょう。

自己紹介

IT業界でのキャリアを活かし、業務効率化に欠かせないMicrosoft365や便利ツールを紹介しています。少しのコツで膨大な可能性を最大限引き出すためのヒントやテクニックを提供し、読者のビジネスパフォーマンス向上に貢献することを目指しています!

MATCH関数とは

MATCH関数の構文を理解している方は、次の章のエラーになる原因まで飛ばしてください。

MATCH関数は、指定された値が範囲内のどこにあるかを検索します。
具体的には、検索する値と検索対象の範囲を指定し、その値が範囲内のどの位置にあるかを示す位置インデックスを返します。

MATCH関数の構文

=MATCH(検索値, 検索範囲, 比較種類)

構文の説明
検索値
┗検索したい数値・テキスト・セル参照を指定。

 

検索範囲
┗値を検索する範囲を指定。
  この範囲は、単一の行、単一の列、または範囲全体で指定できる。

比較種類
┗比較の種類は主に3つのオプションがあるので、下記の表を確認してください。

0または省略 範囲内で検索する値と完全に一致するものを検索します。
1 範囲内の値が検索する値より大きい場合、最大値よりも小さい場合は最小値を返します。範囲が昇順に並んでいる場合に使用されます。
-1 範囲内の値が検索する値より小さい場合、最小値よりも大きい場合は最大値を返します。範囲が降順に並んでいる場合に使用されます。
MATCH関数は、データがリストに含まれているかどうかを確認したり、指定された値がテーブル内のどの行にあるかを特定したりすることが出来るよ!

さて、MATCH関数の説明も終わりましたので、MATCH関数でエラーになる原因について触れていきましょう。

MATCH関数 エラーになる原因

今回は、MATCH関数でエラーになる原因を5パターンご紹介します
それぞれ簡単に理解できるように簡潔に書いております
あなたのエラーが5つうちに当てはまらないか確認をしてください。

MATCH関数で#N/Aエラー

原因①:検索値が見つからない場合

検索値が存在しない場合にはどのようなエラーが発生するかご存知ですか?
回答は#N/Aエラーになります。

データ範囲内で特定の値を検索しても、その検索する値が見つからなければ#N/Aエラーになるということです。

例えば、次のような表があるとします。


この表で、”佐藤”という名前を検索してみます。

関数式

=MATCH(“佐藤”, A2:A4, 0)

この場合、検索値である”佐藤”はデータ範囲内に存在しないため、MATCH関数は#N/Aエラーを返します。

#N/Aエラーになる場合、まずは検索値が検索範囲内にある値かチェックしましょう!

原因②:検索範囲が正しく指定されていない場合

検索対象の範囲が空の場合、どのようなエラーが発生するか知っていますか?
それは、やはり#N/Aエラーです。

検索対象の範囲が空の場合、MATCH関数は適切なデータを見つけることができず、結果としてエラーが返されます( ;∀;)

例でみてみましょう。
下記のような表があるとします。


この表で、”田中”という名前を検索してみます。

関数式

=MATCH(“田中”, B2:B4, 0)

この場合、検索値である”田中”はA列に存在するが、検索範囲がB列になっているため、MATCH関数は#N/Aエラーを返します。

「=MATCH(“田中”, A2:A4, 0)」であればエラーが返されず「1」が返されることになります。

原因③:検索値や検索対象の範囲に数式が含まれる場合

検索値や検索対象の範囲に数式が含まれていても、MATCH関数がエラーを返さない場合があります。しかし、エラーになるがあるので頭に入れておきましょう。

例えば、次のような表があるとします。
A列にはB列に記載されている関数が入力されているとします。

この表で、20という数値を検索してみます。

関数式

=MATCH(20, A2:A4, 0)

この場合、検索範囲のA列に20が存在するのですが、検索範囲に関数が入力されているため予期せぬエラーが返される場合があります。

エラーになる場合は関数が入力されているセルを値貼り付けをしましょう。

MATCH関数で#VALUE!エラー

原因:比較の種類が無効な場合

MATCH関数では、比較の種類を指定する引数があります。この比較の種類が無効な場合にはどのようなエラーが発生するかご存知でしょうか?
それは#VALUE!エラーです。
比較の種類引数には、0(完全一致)、1(範囲内で最大値より小さいもの)、-1(範囲内で最小値より大きいもの)のいずれかを指定する必要があります。

0または省略 範囲内で検索する値と完全に一致するものを検索します。
1 範囲内の値が検索する値より大きい場合、最大値よりも小さい場合は最小値を返します。範囲が昇順に並んでいる場合に使用されます。
-1 範囲内の値が検索する値より小さい場合、最小値よりも大きい場合は最大値を返します。範囲が降順に並んでいる場合に使用されます。
指定された引数がこれらのいずれでもない場合、MATCH関数は#VALUE!エラーを返す。ということです!

例えば、次のような表があるとします。


この表で、”田中”という名前を検索してみます。

関数式

=MATCH(“田中”, B2:B4, a)
※今回は例として比較の種類に「a」を入力しています。

この場合、比較の種類引数が無効なため、MATCH関数は#VALUE!エラーを返します。

MATCH関数で#REF!エラー

原因:検索範囲が異なるシートにある場合

検索対象の範囲が別のシートにある場合、どのようなエラーが発生するかご存知ですか?
回答は#REF!エラーです
検索範囲が存在しないシートにある場合、MATCH関数は#REF!エラーを返します。シート名やセル参照に誤りがある場合にも同様のエラーが発生します。

別のシートであるSheet2に、次のようなデータがあるとします。


この場合、次のように検索を行います。

関数式

=MATCH(2, Sheet2!A1:A3, 0)

しかし、Sheet2に検索対象の範囲が存在しないため、MATCH関数は#REF!エラーを返します。