Excel関数 逆引き集 | 見つからない場合の値指定 → IFERROR

Excel VBA Excel
スポンサーリンク

概要

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),"コード未登録"))

流れとしては、

  1. まず E2 が空なら、何もせず “”(空)を返す
  2. 空でなければ 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割りなどの計算エラーもきれいに処理
  • ただし“すべてのエラー”を隠してしまうので、使いすぎには注意

ここまでのテンプレートをそのまま自分のシートにコピペしながら、少しずつ自分用にアレンジしてみると、エラーだらけのシートから「落ち着いた、意味のある表示」のシートに変わっていきます。

タイトルとURLをコピーしました