概要
VLOOKUP や XLOOKUP で検索したとき、見つからないと #N/A などのエラーが出ますよね。
この「エラーのときだけ、好きな値(空白・メッセージ・0など)に置き換える」のが IFERROR関数 です。
式の形はかんたんで、
=IFERROR(計算式, エラーのときの値)
と書くだけ。
「まず計算式を実行して、エラーになったら後ろの値に差し替える」という動きになります。
基本の使い方
書式と考え方
=IFERROR(値, エラーの場合の値)
前半の「値」に、普通に書く計算式(VLOOKUPや割り算、四則演算など)を入れます。
その計算がうまくいけばその結果を返し、エラーが出たときだけ「エラーの場合の値」に指定した内容を返します。
たとえば VLOOKUP で商品コードが見つからないときに「未登録」と表示したいなら、こうです。
=IFERROR(VLOOKUP(E2,$A$2:$C$100,2,FALSE),"未登録")
「VLOOKUP の結果が正常ならそれを返し、エラー(=見つからない)なら“未登録”と表示」という意味になります。
検索で見つからないときの典型パターン
見つからないときは空白にする
エラー表示をユーザーに見せたくない場面でよく使います。
=IFERROR(VLOOKUP(E2,$A$2:$C$100,2,FALSE),"")
これで、コードが見つからない場合はセルが空白のように見えます。
見つからないときはメッセージを出す
何が起きているのかを分かりやすくするパターンです。
=IFERROR(VLOOKUP(E2,$A$2:$C$100,2,FALSE),"コード未登録")
XLOOKUP に対しても同じように使えます(XLOOKUP は本来第4引数で同じことができますが、練習として IFERROR で包むのもありです)。
=IFERROR(XLOOKUP(E2,$A$2:$A$100,$B$2:$B$100),"コード未登録")
入力が空白のときにエラーも出さないテンプレート
検索式をそのまま書くと、「検索値セルが空のとき」まで IFERROR が動くことがあります。
よく使う“安全テンプレート”は、
=IF(E2="","",IFERROR(VLOOKUP(E2,$A$2:$C$100,2,FALSE),"コード未登録"))
流れとしては、
- まず E2 が空なら、何もせず “”(空)を返す
- 空でなければ VLOOKUP を実行し、エラーなら「コード未登録」と表示
という二段構えになっています。
実務のマスタ参照では、この書き方をそのまま型として覚えてしまうのがおすすめです。
検索以外のエラーでも使える
0 で割ってしまうとき
売上 ÷ 個数 で単価を出すとき、個数が 0 や空白だと #DIV/0! エラーになります。
これを 0 や空白に置き換えたい場合:
=IFERROR(売上/個数,0)
例:
=IFERROR(C2/D2,0)
エラー(0 で割るなど)のときは 0 を返す、という意味です。
計算結果がエラーなら「-」表示
見た目を整える目的で、エラーをハイフンに変えることもあります。
=IFERROR(計算式,"-")
IFERROR を使うときの注意点
何でもかんでも“飲み込んで”しまう
IFERROR は「すべてのエラー」をまとめて握りつぶすので、本当に気づきたいエラーまで隠してしまうことがあります。
たとえば、
- 範囲指定ミス
- 間違ったセル参照
- 数式の誤記
なども全部 “未登録” や “” にすり替わってしまう可能性があります。
なので、
- 本来想定しているエラー(見つからない、0割りなど)だけを対象にしたい
- テスト中はあえて IFERROR を外して、どこがエラーになっているか確認する
といった使い方をすると、安全性が高まります。
「見つからない」と「本当に間違っている」の区別
VLOOKUP / XLOOKUP の範囲を間違えていても、IFERROR で包むと単に「未登録」と見えてしまいます。
「最近、全部未登録になるぞ…?」と思ったら、一度 IFERROR を外して原因をチェックする癖をつけておくと良いです。
例題
問題1: A2:C100 の商品マスタから、E2 に入力された商品コードの「商品名」(2列目)を F2 に表示し、見つからない場合は空白にしてください。
=IFERROR(VLOOKUP(E2,$A$2:$C$100,2,FALSE),"")
問題2: 問題1と同じマスタで、見つからない場合は「未登録」と表示するように G2 に式を書いてください。
=IFERROR(VLOOKUP(E2,$A$2:$C$100,2,FALSE),"未登録")
問題3: E2 が空欄のときは何も表示せず、入力されているときだけ商品名を表示し、見つからない場合は「未登録」と表示する式を H2 に書いてください。
=IF(E2="","",IFERROR(VLOOKUP(E2,$A$2:$C$100,2,FALSE),"未登録"))
問題4: C2 に売上、D2 に個数が入っています。個数が 0 や空白で割り算エラーになる場合は「0」を返す単価計算式を E2 に書いてください。
=IFERROR(C2/D2,0)
問題5: XLOOKUP で、E2 の商品コードに対して商品名を取得し、見つからない場合は「コードなし」と表示する式を F2 に書いてください(マスタは A2:A100=コード、B2:B100=商品名)。
=IFERROR(XLOOKUP(E2,$A$2:$A$100,$B$2:$B$100),"コードなし")
まとめ
IFERROR は「エラーを人間にやさしい値に置き換えるフィルター」です。
=IFERROR(式, エラーのときの値)というシンプルな形- VLOOKUP / XLOOKUP の「見つからない」問題をスッと解決
- 0割りなどの計算エラーもきれいに処理
- ただし“すべてのエラー”を隠してしまうので、使いすぎには注意
ここまでのテンプレートをそのまま自分のシートにコピペしながら、少しずつ自分用にアレンジしてみると、エラーだらけのシートから「落ち着いた、意味のある表示」のシートに変わっていきます。
