Excel VLOOKUPが動作しない - #N/Aおよび#VALUEエラーの修正

  • これを共有
Michael Brown

VLOOKUPが間違ったデータを引っ張ってきたり、全く動作しないことはありませんか? このチュートリアルでは、よくあるVLOOKUPエラーを素早く修正し、その主な制限を克服する方法を紹介します。

以前の記事で、ExcelのVLOOKUP関数のさまざまな側面を探りました。 私たちをよく見てくださっている方なら、もうこの分野のエキスパートになっているはずです :)

しかし、多くのExcel専門家がVLOOKUPを最も複雑なExcel関数の1つと考えているのは、その理由がないわけではありません。 VLOOKUPには多くの制限があり、それが様々な問題やエラーの原因になっています。

この記事では、#N/A、#NAME、#VALUEといったVLOOKUPエラーの主な原因と、その解決策や修正方法をわかりやすく解説しています。 VLOOKUPが機能しない最もわかりやすい原因から説明しますので、以下のトラブルシューティングの手順を順に確認していくとよいでしょう。

    VLOOKUPの#N/Aエラーの修正

    VLOOKUP式で、Excelがルックアップ値を見つけられない場合、#N/Aエラーメッセージ(「利用できません」の意味)が表示されます。 このような現象が起こる理由は、いくつか考えられます。

    1.ルックアップ値のスペルが間違っている

    数千行からなる大きなデータセットを扱う場合や、ルックアップ値を直接数式に入力する場合などには、ミスプリントがよく発生します。

    2.近似値一致VLOOKUPの#N/A

    計算式が最も近い一致を検索する場合、( レンジルック 引数をTRUEに設定するか、省略した場合)、#N/Aエラーは2つのケースで表示されることがあります。

    • ルックアップ値はルックアップ配列の最小値より小さい。
    • ルックアップカラムが昇順でソートされていない。

    3.完全一致VLOOKUPの#N/A

    完全一致で検索している場合( レンジルック 引数をFALSEに設定した場合)、ルックアップ値と完全に一致する値が見つからないと#N/Aエラーが発生します。 詳細については、VLOOKUP完全一致 vs. 近似一致を参照してください。

    4.ルックアップ列がテーブル配列の左端の列ではないこと

    Excel VLOOKUPの最も重要な制限の1つは、その左側を見ることができないということです。 したがって、ルックアップカラムは常に 最左列 実際には、このことを忘れてしまい、#N/Aエラーになってしまうことがよくあります。

    解決方法 : ルックアップ列が一番左の列になるようにデータを再構築できない場合、VLOOKUPの代わりにINDEXとMATCH関数を併用することができます。 以下は計算式の例です。 INDEX MATCH式で値を左からルックアップする。

    5.数値はテキストとしてフォーマットされます。

    VLOOKUPの計算式でよくあるもう一つの原因#N/Aエラーは、メインまたはルックアップテーブルでテキストとしてフォーマットされた数字です。

    これは通常、外部のデータベースからデータをインポートした場合や、数字の前にアポストロフィを入力して先頭のゼロを表示させた場合に発生します。

    ここでは、テキストとしてフォーマットされた数値の最もわかりやすい指標を紹介します。

    解決策 問題のある番号をすべて選択し、エラーアイコンをクリックし 数値に変換する 詳しくは、「Excelでテキストを数値に変換する方法」をご覧ください。

    6.先頭または末尾のスペース

    これは、VLOOKUP #N/A エラーの最も目立たない原因です。なぜなら、人間の目には余分なスペースがほとんど見えず、特にエントリーのほとんどがスクロールより下にあるような大きなデータセットを扱うときには、このような余分なスペースを見つけることができないからです。

    解決策1:ルックアップ値に余分なスペースがある場合

    VLOOKUP式を正しく動作させるために、ルックアップ値をTRIM関数でラップしてください。

    =vlookup(trim(e1), a2:c10, 2, false)

    解決策2:ルックアップカラムに余分なスペースがある場合

    ルックアップカラムに余分なスペースが発生した場合、VLOOKUPの#N/Aエラーを回避する簡単な方法はありません。 その代わりに、INDEX、MATCH、TRIM関数を組み合わせて配列式として使用することが可能です。

    =index(b2:b10, match(true, trim(a$2:a$10)=trim(e1), 0))

    これは配列の数式なので、Ctrl + Shift + Enter を押して適切に補完することを忘れないでください(配列がネイティブである Excel 365 と Excel 2021 では、これは通常の数式としても機能します)。

    ヒント:「スペースのトリム」ツールを実行すると、ルックアップテーブルとメインテーブルの余分なスペースを瞬時に削除し、VLOOKUP公式をエラーフリーにすることができます。

    VLOOKUPの数式で#VALUE!

    一般に、Microsoft Excelは、数式で使用される値が誤ったデータ型である場合に#VALUE!エラーを表示します。 VLOOKUPに関して、VALUE!エラーの一般的な原因は2つあります。

    1.ルックアップ値が255文字を超える

    VLOOKUPは255文字以上の値を検索することができませんのでご注意ください。 検索値がこの制限を超えた場合、#VALUE!エラーが表示されます。

    解決方法 INDEX MATCH式で代用します。 この場合、この式は完全に機能します。

    =index(b2:b7, match(true, index(a2:a7= e1, 0), 0))

    2.ルックアップワークブックのフルパスが与えられていない。

    別のワークブックからデータを取得する場合は、そのワークブックへのフルパスを指定します。 正確には、拡張子を含むワークブック名を[角かっこ]で囲み、シート名の後に感嘆符を付けて指定します。 ワークブック名、シート名、またはその両方にスペースやアルファベット以外の文字が含まれている場合は、パスをシングルクォーテーションで囲む必要があります。

    以下は、その構造です。 table_array 引数を、別のワークブックから Vlookup に渡す。

    '[ワークブック名]シート名'!範囲

    実際の計算式はこのような感じでしょうか。

    =VLOOKUP($A$2,'[New Prices.xls]Sheet1'!$B:$D, 3, FALSE)

    上記の式は、Sheet1 の B 列の A2 の値を検索して 新価格 のワークブックを作成し、D列から一致する値を返す。

    パスのいずれかの要素が欠けていると、VLOOKUP式は機能せず、#VALUEエラーが返されます(ルックアップワークブックが現在開かれている場合を除く)。

    詳しくは、こちらをご覧ください。

    • Excelで他のシートやワークブックを参照する方法
    • 別のワークブックからVlookupを行う方法

    3.引数col_index_numが1より小さい場合

    しかし、この引数がVLOOKUPの中にある他の関数によって返される場合、そのようなことが起こる可能性があります。

    ということは、もし col_index_num が1より大きい場合、数式は#VALUE!エラーも返します。

    もし col_index_num がテーブル配列の列数より大きい場合、VLOOKUPは#REF!エラーを発生させます。

    VLOOKUP #NAMEエラーを解決する

    これは最も簡単なケースで、関数名のスペルを間違えてしまった場合に#NAME?エラーが表示されます。

    解決策は明白で、スペルを確認することです :)

    Excel VLOOKUPでエラーが発生する主な原因

    VLOOKUPは、かなり複雑な構文であることに加え、Excelの他の関数よりも間違いなく多くの制限があります。 この制限のために、一見正しい数式が、期待とは異なる結果をもたらすことがよくあります。 以下では、VLOOKUPが失敗するいくつかの典型的なシナリオに対する解決策を紹介します。

    VLOOKUPは大文字と小文字を区別しない

    VLOOKUP関数は、文字の大文字と小文字を区別せず、小文字と大文字を同一視しています。

    解決方法 VLOOKUP、XLOOKUP、INDEX MATCHと大文字小文字を区別できるEXACT関数を組み合わせて使用します。 詳しい説明と数式の例は、このチュートリアルでご覧いただけます:Excelで大文字小文字を区別してVlookupを行う5つの方法。

    テーブルに新しいカラムが挿入または削除されました。

    残念なことに、VLOOKUP式は、ルックアップテーブルから新しいカラムが削除されたり追加されたりすると、毎回動作しなくなります。 これは、VLOOKUP関数の構文が、戻りカラムのインデックス番号を定義する必要があるからです。 テーブル配列に新しいカラムが追加または削除されると、明らかにそのインデックス番号が変更されています。

    解決方法 INDEX MATCHでは、ルックアップとリターンの範囲を別々に指定できるので、関連する数式をすべて更新する心配がなく、好きなだけ列を削除したり挿入したりすることができます。

    数式を他のセルにコピーすると、セル参照が変更される

    見出しには、問題点を網羅的に説明していますね。

    解決方法 には、必ず絶対参照($記号)を使用します。 table_array F4キーを押すことで、異なる参照タイプを素早く切り替えることができます。

    VLOOKUPは最初に見つかった値を返します

    ExcelのVLOOKUPは、最初に見つかった値を返しますが、2番目、3番目、4番目など、任意の値を返すように強制することができます。 また、最後の一致や見つかったすべての一致を取得する方法もあります。

    ソリューション : フォーミュラの例はこちらでご覧いただけます。

    • VLOOKUPで、N回目の出現を返す
    • VLOOKUP複数値
    • XLOOKUP式で最後のマッチを取得する

    VLOOKUPがあるセルでは動作するが、他のセルでは動作しないのはなぜですか?

    VLOOKUP式で、あるセルには正しいデータが返され、他のセルには#N/Aエラーが返される場合、いくつかの理由が考えられます。

    1.テーブル配列がロックされていない

    この数式が2行目(例えばE2)にあり、うまく動作しているとします。

    =vlookup(d2, a2:b10, 2, false)

    3行目にコピーすると、数式は次のように変化します。

    =vlookup(d3, a3:b11, 2, false)

    には相対的なリファレンスが使用されるため table_array この場合、数式がコピーされた行の相対位置(この例では A2:B10 から A3:B11)に応じて変化します。 したがって、一致する行が 2 行目にある場合は見つかりません!

    解決方法 複数のセルに対してVLOOKUP式を使用する場合は、常に テーブル配列をロックする A$2:$B$10 のように$記号で参照する。

    2.テキスト値またはデータ型が一致しない場合

    VLOOKUPの失敗のもう一つの原因は、ルックアップ値とルックアップ列の類似値の差です。 場合によっては、その差は非常に微妙で、視覚的に発見するのは困難です。

    解決方法 VLOOKUPが#N/Aエラーを返すとき、ルックアップ列にはルックアップ値がはっきりと表示され、どちらもまったく同じスペルであることがわかる場合、まず問題の根本原因(数式またはソースデータ)を特定することが必要です。

    2つの値が同じか違うかを見るには、このように直接比較する。

    =E1=A4

    ここで、E1 はあなたのルックアップ値、A4 はルックアップ列の同一値です。

    この式がFALSEを返した場合は、全く同じように見えるが、何らかの違いがあることを意味する。

    の場合 数値 最も考えられる理由は、テキストとしてフォーマットされた数字です。

    の場合 テキスト値 そこで、LEN関数を使って、2つの文字列の長さの合計を求めます。

    =LEN(E1)

    =LEN(A4)

    もし結果の数字が違っていたら(下のスクリーンショットのように)、その原因は余分なスペースにあることがわかります。

    この問題を解決するには、余分なスペースを削除するか、このINDEX MATCH TRIMの数式を使用して回避してください。

    VLOOKUPが間違ったデータを引っ張ってくるのはなぜですか?

    VLOOKUPが間違った値を返す理由は、もっとたくさんあるはずです。

    1. 検索モードが正しくない 完全一致させたい場合は、必ず レンジルック デフォルトはTRUEで、この引数を省略すると、VLOOKUPは近似一致を探すと仮定し、ルックアップ値より小さい最も近い値を検索します。
    2. ルックアップカラムがソートされていない 近似的に一致するVLOOKUP( レンジルック を TRUE に設定した場合) は、テーブル配列の最初のカラムを小さいものから順に昇順で並べなければなりません。
    3. ルックアップカラムに重複がある ルックアップ列が2つ以上の重複する値を含む場合、VLOOKUPは最初に見つかった一致する値を返しますが、それは期待する値ではないかもしれません。
    4. リターン欄が正しくない 第3引数のインデックス番号を再確認してください :)

    2つのシート間でVLOOKUPが機能しない

    まず最初に、上で述べた#N/A、#VALUE、#REFのエラーの共通の理由は、他のシートからルックアップする際にも同じ問題を引き起こす可能性があることに注意してください。 そうでない場合は、以下の点をチェックしてみてください。

    1. 別のシートまたは別のワークブックへの外部参照が正しいことを確認します。
    2. 他のワークブックからVlookupを行う場合、そのワークブックは へいさてき の場合、数式に閉じたワークブックのフルパスが含まれていることを確認してください。
    3. VLOOKUPの場合 別のワークシートにあるテーブルの配列を選択できない (ルックアップシートで範囲をハイライトしても、何も表示されない) table_array 引数で指定されている場合、2つのシートはExcelの別々のインスタンスで開かれている可能性が高く、互いに通信できません。 詳しくは、どのExcelファイルがどのインスタンスにあるかを判断する方法をご覧ください。 これを解決するには、すべてのExcelウィンドウを閉じてから、同じインスタンスのシート/ワークブックを再度開きます(デフォルト動作です)。

    Excelでエラーを出さずにVlookupする方法

    Excelの標準的なエラー表記でユーザーを脅かしたくない場合は、代わりにユーザーフレンドリーなテキストを表示したり、何も見つからなかった場合は空白セルを返すことができます。 これは、VLOOKUPとIFERRORまたはIFNA関数を使用することによって実現できます。

    すべてのエラーをキャッチする

    Excel 2007以降では、IFERROR関数を使用してVLOOKUP式のエラーをチェックし、以下の場合に独自のテキスト(または空白文字列)を返すことができるようになりました。 何らかのエラー が検出される。

    例えば、こんな感じです。

    =IFERROR(VLOOKUP(E1, A2:B10, 2, FALSE), "Oops, something went wrong")

    Excel 2003以前では、IF ISERRORという数式で同じことができます。

    =IF(ISERROR(VLOOKUP(E1, A2:B10, 2, FALSE)), "おっと、何かが間違っていた", VLOOKUP(E1, A2:B10, 2, FALSE))

    詳しくは、ExcelのVLOOKUPでIFERRORを使うをご覧ください。

    N/Aエラーを処理する

    他のすべてのエラータイプを無視して#N/Aエラーだけをトラップするには、IFNA関数(Excel 2013以降)またはIF ISNA式(すべてのバージョン)を使用します。

    例えば、こんな感じです。

    =IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "おっと、一致するものがありません。 もう一度試してください!")

    =IF(ISNA(VLOOKUP(E1, A2:B10, 2, FALSE)), "おっと、一致するものがありません。 もう一度試してください!", VLOOKUP(E1, A2:B10, 2, FALSE))

    このチュートリアルで、VLOOKUPのエラーを取り除き、数式を思い通りに動作させることができるようになることを期待しています。

    ExcelでVLOOKUPする方法 - ビデオチュートリアル

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。