【Excel】VLOOKUP関数のエラー値「#N/A」を別の値に変換!エラーの4つの原因も紹介

エクセルのVLOOKUP 関数のエラーを別の値に変換する方法

VLOOKUP関数の使い方を過去の記事で紹介しましたが、検索方法を”FALSE”で選んだ場合、抽出結果がエラー値「#N/A」と表示されることがあります。

今回は、VLOOKUP関数で表示されるエラー値「#N/A」の解消方法と別の値への変換方法をご紹介します。

もし、VLOOKUP関数の使い方自体が分からない方は以下の記事で紹介していますのでぜひどうぞ!

VLOOKUP関数とは?(簡単におさらい)

VLOOKUP関数は、表を縦方向に検索して情報を抽出する関数です。

下図のようにセルH4(赤色)にVLOOKUP関数を用いることで、商品番号”25”(黄色)の商品名をB4~E15の検索範囲(緑色)から抽出することが出来ます。

今回は、セルH4にエラー値「#N/A」が表示されたときの解決方法と、エラーを別の値に変換する方法のご紹介です。

エクセルのVLOOKUP関数の使い方
VLOOKUP関数の使い方

エラー値「#N/A」が発生する4つの原因(実例紹介)

「#N/A」が表示されるということは、検索値が検索範囲から見つからず、エラー値で表示するしか選択がなかった、という状況です。

今回は、エラー値「#N/A」が発生する4つの原因を紹介します。

VLOOKUP関数の検索値が見つからないとエラー発生
VLOOKUP関数の検索値が見つからないとエラー発生

VLOOKUP関数の検索値がわずかに異なる

1つ目のパターンは、検索値と検索範囲の値がわずかに異なるために、検索値がヒットしない場合です。

例えば、「11 222」「11  222」の数値は同じ値に見えるかもしれませんが、前者は”11”と”222”の間に半角スペースが含まれていて、後者は、”11”と”222”の間に全角スペースが含まれます。

検索値が「11 222」(半角スペース)で検索範囲の値が「11  222」(全角スペース)のため、半角スペース分異なるのでVLOOKUP関数上は違う値とみなされ、「#N/A」が表示されます。

同様に、半角スペースが先頭や末尾に入り込んでいる漢字が異なるなど、意外に陥りやすい誤りです。

VLOOKUP関数の検索値がわずかに異なるためエラー
VLOOKUP関数の検索値がわずかに異なるためエラー

VLOOKUP関数の検索範囲が絶対参照に未設定

 2つ目のパターンは、VLOOKUPの検索範囲を絶対参照($で固定)を設定し忘れていることが原因で、対象セルを別のセルに貼り付けた時に検索値が検索範囲から外れてエラーが発生する場合です。

具体的な例で説明しますね。

下の表のセルH4にはVLOOKUP関数が入っていますが、検索範囲はB4:E15となっていて、絶対参照が設定されていません。つまり、$B$4:$E$15になっていないということです。

この状態でセルH4をコピーして、下のセルH5,H6に貼り付けたらどうなるでしょう。

VLOOKUP関数の検索範囲が絶対参照に設定されていない
VLOOKUP関数の検索範囲が絶対参照に設定されていない

結果は下表のとおりです。

一つ下のセルH5は#N/Aではありませんが、セルH6は#N/Aとなりました。

理由は、検索範囲が固定されていないため、2行下に検索範囲が移動したことで、検索値”10”が検索範囲から外れたためです。

どんな状況でも$固定(絶対参照)を付けることが正しい訳ではありませんが、検索範囲を絶対に動かさないと分かっている場合は、固定(絶対参照)するよう癖付けましょう。

VLOOKUP関数の引数を絶対参照にしていないため検索範囲がズレる
数式を$固定していないために検索範囲がズレる

セルの書式が文字列

3つ目のパターンは、検索値か検索範囲の値どちらかのセルの書式設定が【文字列】になっている場合です。

下図のように、検索値は”15”と一致しているように見えますが、セルB5のセルの書式設定を確認すると【文字列】となっているため、VLOOKUPの抽出結果は「#N/A」となってしまいます。

エクセルのセルの書式が文字列によるエラー
セルの書式が文字列によるエラー

どうして【文字列】じゃだめなの?と思われる方も多いと思いますが、【文字列】は値ではなく文章として認識されるため、数値とは別物として取り扱いされるためです

数字が文字列と認識されると、セルの左上に緑色の三角形エラーインジケーターが表示されるのが特徴のため、このマークが出ていたら文字列が原因だと疑ってください。

エクセルのセルの緑色の三角は文字列の可能性
緑色の三角は文字列の可能性

検索値が検索範囲の一番左の列に存在しない

4つ目のパターンは、検索値が検索範囲の一番左の列に存在しない、です。

検索値は必ず検索範囲の一番左の列にいる必要があります

下図のように緑枠(検索範囲)内であれば、どこに検索値がいていいわけではありません。

必ず一番左の列です。

VLOOKUP関数の検索値は一番左の列
VLOOKUP関数の検索値は一番左の列

「#N/A」の表示を消す or 別の値で表示させる方法

4つの「#N/A」の原因を上の見出しで紹介しましたが、検索値が検索範囲に本当に存在しない場合などはどうしようもありません。(そういう目的で数式を利用している場合もあります)

ただ、見栄えがあまり良くないので、「#N/A」ではなく、該当なし」「(空白スペース)」や「0」など表示を変更するする方法を紹介します。

方法は簡単です。

IFERROR関数の中にVLOOKUP関数を使用することで「#N/A」は無くせます

IFERROR関数はエラーが表示されないように別の文字列などに置き換えることができる関数です。

下の数式の緑色部分がVLOOKUP関数に付け加えるIFERROR関数の箇所で、青文字が変換後の値です。

=IFERROR(VLOOKUP(G4,B4:E15,2,FALSE),"該当なし")

下図のようにIFERROR関数を使用することで、”該当なし”で表示することができました。

エクセルのIFERROR関数でエラー値を別の値に変換
IFERROR関数でエラー値を別の値に変換

IFERROR関数以外にもエラー値を別の値に変換する4つの方法を下のリンク記事で詳しく紹介していますので、興味のある方はぜひ参考にしてみてください。