VLOOKUPとIFERRORを組み合わせてエラー表示を防ぐ方法

VLOOKUPで検索値が見つからないと表示される「#N/A」エラー。表の見た目が崩れて気になる方も多いはずです。結論から言うと、VLOOKUPをIFERROR関数で囲むだけで、エラーを好きな文字(「該当なし」など)や空欄に置き換えられます。この記事では基本の書き方から、IFERRORの落とし穴、より安全なIFNA関数の使い分けまで解説します。

目次

VLOOKUPをIFERRORで囲む基本の書き方

基本の形は次の通りです。

=IFERROR(VLOOKUP(検索値,検索範囲,列番号,FALSE),代替値)

VLOOKUPの結果がエラーにならなければそのまま表示され、エラーになった場合だけ「代替値」の部分が表示されます。既存の数式の外側をIFERRORで囲むだけなので、今すでに使っているVLOOKUPにもそのまま追加できます。

なぜIFERRORで#N/Aエラーが消えるのか

IFERRORは「1つ目の引数(数式)を計算してみて、それがエラーだった場合だけ2つ目の引数(代替値)を返す」という関数です。VLOOKUPが検索値を見つけられないと「#N/A」というエラー値を返しますが、IFERRORはこのエラー値を検知して代替値に差し替えます。エラーでなければ何もせず、VLOOKUPの結果をそのまま通します。

具体例:商品コードから商品名を検索する

次のような商品マスタ(A1:B4)があるとします。

A(商品コード) B(商品名)
2 P001 ノートPC
3 P002 マウス
4 P003 キーボード

D列に入力された商品コードから商品名を検索するとき、次のように書きます。

=IFERROR(VLOOKUP(D2,A2:B4,2,FALSE),"該当なし")

D2が「P002」なら「マウス」が表示されます。もしD2に「P999」のようにマスタに存在しないコードが入っていた場合、通常なら「#N/A」と表示されるところが「該当なし」に置き換わります。

エラー時に何も表示したくない場合

代替値を空文字(””)にすれば、セルは空欄のまま表示されます。

=IFERROR(VLOOKUP(D2,A2:B4,2,FALSE),"")

注意点:IFERRORは「すべてのエラー」を隠してしまう

IFERRORは#N/Aだけでなく、#REF!や#VALUE!などあらゆる種類のエラーを同じように隠してしまいます。これは便利な半面、数式の参照ミスや入力ミスに気づけなくなるリスクでもあります。「検索値が見つからない場合」だけを対象にしたいなら、IFNA関数を使うとより安全です。

=IFNA(VLOOKUP(D2,A2:B4,2,FALSE),"該当なし")

IFNAは#N/Aエラーのときだけ代替値を返し、#REF!や#VALUE!などの他のエラーはそのまま表示させます。数式のバグを早期に発見できるため、表を作り込む段階ではIFNAを使い、最終的な見た目を整える段階でIFERRORに切り替える、という使い分けもおすすめです。

関数 対象になるエラー 向いている場面
IFERROR #N/A、#REF!、#VALUE!など全種類 完成した表の見た目を整えるとき
IFNA #N/Aのみ 数式を組んでいる途中、他のミスも検知したいとき

複数条件で検索したい場合

VLOOKUPは検索条件を1つしか指定できません。「氏名と日付の両方が一致する行」のように複数条件で検索したい場合はXLOOKUP関数を使うと、作業列なしで実現できます。詳しい書き方はXLOOKUPで複数条件に一致するデータを検索する方法で解説しています。

まとめ

VLOOKUPの結果をIFERROR(またはIFNA)で包むだけで、#N/Aだらけの表を見やすく整えられます。仕上げの表にはIFERROR、数式を組んでいる途中はIFNAという使い分けを覚えておくと、エラーの見落としを防げます。

目次