iBitzEdge

エクセル(Excel)のVLOOKUP関数で「#N/A」エラーを数値と文字列に対応させて回避

VLOOKUPを使用している時に、なぜか「#N/A」エラーが発生するという経験をもつユーザーは少なくないはずだ。これは数値と文字列の不一致で起こる問題がほとんどである。

VLOOKUPで参照した範囲の「はじめの列が文字列」で「検索値が値」になっているか、またはその逆に「はじめの列が値」なのに「検索値が文字列」なっていることが多い。

VLOOKUPでの「#N/A」エラー

いくつかの手順で文字列を値に、または値を文字列に変換してこの「#N/A」エラーを解消することができる。
ここでは、VLOOKUPで起こる「#N/A」エラーが発生する時に、文字列を値に、または値を文字列に変換して解消する方法をかんたんに説明する。

 

対象となるExcelのバージョン
Excel 2016, Excel 2013, Excel 2010, Excel 2007, Excel Starter 2010
今回使用する関数
VLOOKUP, VALUE, TEXT, IFERROR

 

まずは書式を確認する

VLOOKUPでの「#N/A」エラーの多くは、参照したはじめの列と検索値が異なる書式を持っているためであることが多い。列または検索値をどちらか片方に合わせることで根本的に解決する。

もしくは、VLOOKUPで検索値をどちらかに変換して解決することもできる。

  1. 検索値と列の書式を確認

    まずはVLOOKUP関数で使用した「検索値」で参照しているセルの書式を確認する。セルを選択し、[ホーム>数値]にあるプルダウンメニューを確認する。ここではE1を選択し確認すると標準書式であることがわかる。

    次に、VLOOKUP関数の「範囲」で指定した範囲のはじめの列の書式を確認する。範囲で選択した範囲のはじめの列を選択し、[ホーム>数値]にあるプルダウンメニューで書式を確認する。ここではA2を選択し確認すると文字列書式であることがわかる。

    この2つを確認し、書式が異なっていればやはりこれが原因でエラーが発生していることがわかる。

    • 検索値と列の書式自体を直す場合は次のStep1へ。
    • 検索値を値に変換して参照する場合は次のStep2へ。
    • 検索値を文字列に変換して参照する場合は次のStep3へ。
    • Step2とStep3の複合技でどちらの場合にも対応させる場合は次のStep4へ。

「#N/A」エラーを解消

  1. 方法1. 値の書式を変換

    VLOOKUPの「検索値」として参照しているセルを選択し、[ホーム>数値]で列の書式に一致させる。画像の例では、「文字列」から「標準」に変更する。

    もしまだ「#N/A」エラーが解決していない場合は、セルの書式が変更されたことが反映されていない可能性があるので、「検索値」で参照しているセルを再度選択して「F2」キーを押すかダブルクリックし、セル編集モードにしたあと、エンターキーを押して反映させる。(画像の例ではE1を選択後にF2キーを押してエンター)

  2. 検索値をVALUE関数で値に変換

    もし、列の書式が「値」になっているのに、VLOOKUPの検索値として参照しているセルが「文字列」になっている場合は、文字列から値に変換する。VLOOKUP関数を入力したセルにVALUE関数を使用して以下のような形で入力する。

    VLOOKUP(VALUE(検索値),範囲,2,0)

    ここでは、「=VLOOKUP(VALUE(E1),A2:B13,2,0)」と入力する。すると文字列から値に変換され一致するためエラーが改善する。

  3. 検索値をTEXT関数で文字列に変換

    もし、列の書式が「文字列」になっているのに、VLOOKUPの検索値として参照しているセルが「値」になっている場合は、値から文字列に変換する。VLOOKUP関数を入力したセルにTEXT関数を使用して以下のような形で入力する。

    VLOOKUP(TEXT(検索値,"@"),範囲,2,0)

    ここでは、「=VLOOKUP(TEXT(E1,"@"),A2:B13,2,0)」と入力する。すると値から文字列に変換され一致するためエラーが改善する。

    TEXT関数を使用しない方法で「=VLOOKUP(検索値&"",範囲,2,0)」のように入力することでも文字列に変換することができる。

  4. IFERROR関数で両方に対応させる

    列の書式が「文字列」で検索値が「値」の場合や、逆に列が「値」で検索値が「文字列」担っている場合、その他にも列の書式がバラバラになっている場合、どこが一致していないかわからない場合は、どちらでも対応するIFERROR関数を使用する。

    VLOOKUP関数を入力したセルにIFERROR、VALUE、TEXT関数を使用して以下のように入力する。

    IFERROR(VLOOKUP(VALUE(検索値),範囲,2,0),VLOOKUP(TEXT(検索値,"@"),範囲,2,0))

    ここでは、「=IFERROR(VLOOKUP(VALUE(E1),A2:B13,2,0),VLOOKUP(TEXT(E1,"@"),A2:B13,2,0))」と入力する。すると、どちらのパターンでもエラーを表示せずに参照できるようになる。

参考