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という使い分けを覚えておくと、エラーの見落としを防げます。





