VLOOKUP関数で#N/Aになる原因|あるのになぜエラー?

ここでは、エクセルのVLOOKUP関数で#N/Aエラーになる4つの原因を解説します。

 

特に最後の原因は気付きにくいので、役に立つと思います。

【原因1】検索値が範囲内にない

VLOOKUP関数が#N/Aエラーになる一つ目の原因は、「検索値が範囲内にない」です。

 

では、例を確認し、その後対処法を見てみましょう。

 

1-1.例を確認

まずは例を確認します。

 

A列に番号、B列に都道府県名が入っています。

 

そして、検索値を「7」、範囲を「A1からB6」、列番号を「2」として、「番号が7の都道府県名」をVLOOKUP関数で抜き出そうとしましたが、#N/Aエラーになりました。

 

これは、「A列に『7』がないから」です。

このように、検索値として指定した値が範囲(の左端の列)にないと、VLOOKUP関数は#N/Aエラーになります。

 

1-2.対処方法

対処方法は、「検索値を変える」か「範囲を変える」です。

 

つまり、「検索値が範囲の左端の列にある状態」にします。

 

先ほどの例の場合には、次のように対処します。

対処法
  • 検索値を1~6のどれかに変える
  • 7の都道府県名を追加し、範囲を広げる

【検索値を変えた例】

 

【範囲を変えた例】

これで#N/Aエラーが解消されます。

【原因2】検索値が範囲の左端の列にない

VLOOKUP関数が#N/Aエラーになる二つ目の原因は、「検索値が範囲の左端の列にない」です。

 

では、例を確認し、その後対処法を見てみましょう。

 

2-1.例を確認

まずは、例の確認です。

先ほどの例と比べて、A列とB列が入れ替わっています。

 

この状態で検索値を「3」、範囲を「A1からB6」、列番号を「2」として、「番号が3の都道府県名」をVLOOKUP関数で抜き出そうとしましたが、#N/Aエラーになりました。

 

これは、「指定した範囲の『最も左端の列』に検索値が見つからない」からです。

例では、A列に都道府県名が入っており「3」がありません。

 

このように、「範囲の最も左端の列を検索する」というVLOOKUP関数のルールが守られていないので、#N/Aエラーになっているのです。

 

2-2.対処方法

対処法は、「左端に検索値があるよう元の表を作り直す」、または「範囲を変える」です。

 

つまり、「左端が検索列になるような表や範囲にする」のです。

 

先ほどの例の場合には、「A列とB列を入れ替える」ことをします。

 

【A列とB列入れ替え後の例】

これで#N/Aエラーが解消されます。

【原因3】検索列が範囲に含まれていない

VLOOKUP関数が#N/Aエラーになる三つ目の原因は、「検索したい列が範囲に含まれてない」です。

 

では、例を確認し、その後対処法を見てみましょう。

 

3-1.例を確認

まずは、例の確認です。

A列に番号、B列に都道府県名が入っています。

 

そして、検索値を「3」、範囲を「B1からB6」、列番号を「2」として、「番号が3の都道府県名」をVLOOKUP関数で抜き出そうとしましたが、#N/Aエラーになりました。

 

これは、「検索したい列が範囲に含まれていない」からです。

例ではA列を範囲に入れていません。

 

このように、範囲の指定ミスなどでも#N/Aエラーになります。

 

3-2.対処方法

対処方法は、「範囲を直す」です。

 

やはり、「左端が検索列になるような範囲にする」のです。

 

先ほどの例の場合には、「範囲にA列を含める」ことをします。

 

【範囲を直した例】

これで#N/Aエラーが解消されます。

【原因4】半角の「~」を使っている

VLOOKUP関数が#N/Aエラーになる原因の四つ目は、「半角の『~』を使っている」です。

 

では、例を確認し、その後対処法を見てみましょう。

 

4-1.例を確認

まずは、例の確認です。

A列に「~」を使って時間帯を、B列に時間数を入れています。

 

そして、検索値を「D2(1:00~3:00)」、範囲を「A2からB6」、列番号を「2」として、「1:00~3:00の時間数」をVLOOKUP関数で抜き出そうとしましたが、#N/Aエラーになりました。

 

これは、「検索値や検索される値に半角の『~』を使っている」からです。

なぜ「~」を使うとダメなのかは不明ですが、VLOOKUP関数は特定の記号を使うと#N/Aエラーになります。

 

4-2.対処方法

対処法は、「半角の『~』を全角の『~』にする」です。

 

【「~」から「~」に変えた例】

ちなみに「~」を「~」にまとめて置き換える場合には、置換機能ではなくSUBSTITUTE関数を使って行いましょう。

 

なぜなら、置換機能を使うと下のようにエラーになるからです。

手順はまず作業列を準備し、そこでSUBSTITUTE関数を使って「~」を「~」に置き換えた値に変換します。その後、その値をコピーして置き換えたいセルに「値の貼り付け」を行えばOKです。

 

なお、SUBSTITUTE関数の使い方を知りたい場合には、次のページを参照してください。

⇒ SUBSTITUTE関数の使い方のページへ

 

4-3.検索値があるのにエラー?なぜ??の一因に

このように、「~」で#N/Aエラーになるのは原因に気付きにくく、「検索値があるのに#N/Aエラーになる」、「なぜ?」となりがちです。

 

VLOOKUP関数に限らずエクセルでは、様々な場面で「特定の記号を使うとうまくいかない」ケースがあるので、覚えておきましょう。

 

以上、参考になれば幸いです。


口コミ・評判のいいExcel本の紹介】


Top