Excel関数 逆引き集 | 不正入力の抑止 → IFERROR

Excel
スポンサーリンク

概要

「ユーザーが変な値を入れても、#N/A だの #VALUE! だの見せたくない」
「不正な入力があっても、表は“破綻させずに”、わかりやすい表示にしたい」

そんなときに使えるのが IFERROR 関数による“不正入力の抑止” です。

IFERROR は
「この式の結果がエラーなら、代わりにこっちを返してね」
と、エラーを“つかまえて別の値に差し替える” ための関数です。

ここでは、
不正入力が原因のエラーを、
IFERROR でどう扱うかを、初心者向けに丁寧に解説します。


IFERROR の基本

書式と考え方

書式はとてもシンプルです。

=IFERROR(計算式, エラーのときに返す値)

動きは一行で説明できます。

  • 計算式の結果が正常 → そのまま返す
  • 計算式の結果がエラー → 「エラーのときに返す値」を返す

IFERROR がつかまえるエラーは、
#DIV/0!, #N/A, #VALUE!, #REF!, #NUM!, #NAME? など、ほぼすべて。

つまり、
「不正入力 → エラー → IFERROR で“安全な値・メッセージ”に変換」
という流れを作ることで、
ユーザーの入力ミスがあっても表全体を壊さずに済みます。


不正な割り算入力を抑止する(0 や空白のとき)

分母が 0 のときは 0 や空白にする

C2 ÷ D2 で割合を出している列を考えます。

通常の式はこうです。

=C2/D2

ここで D2 に 0 や空白が入ると #DIV/0! エラーになります。
原因は「分母に不正な値が入っている」=不正入力。

このとき IFERROR を使うと、
エラーを 0 や空白に“差し替え”できます。

例:エラーなら 0 にする

=IFERROR(C2/D2, 0)

例:エラーなら空白にする

=IFERROR(C2/D2, "")

これで、分母に 0 や空白が入っても、
見た目が崩れることなく、“不正入力の悪影響”を抑えることができます。


不正な検索値を抑止する(VLOOKUP / XLOOKUP)

存在しないコードを入れられても崩さない

A2 に「商品コード」、
D2:E100 に「商品マスタ」があるとします。

通常の VLOOKUP はこうです。

=VLOOKUP(A2, $D$2:$E$100, 2, FALSE)

A2 に存在しないコードが入ると #N/A になります。
これは「ユーザーの入力したコードが不正」という状態。

IFERROR をかぶせて、
「不正なコードなら“未登録”と表示する」ようにできます。

=IFERROR(
  VLOOKUP(A2, $D$2:$E$100, 2, FALSE),
  "未登録"
)

動き:

  • 正しいコード → 商品名を返す
  • マスタにないコード → 「未登録」と表示

これで、ユーザーが間違ったコードを入れても、
表に謎の #N/A が並ぶのではなく、
「未登録」とはっきり分かるようになります。


不正な数値入力を抑止する(文字が混ざったとき)

数値列に文字列が混ざっても、エラーにしない

A2 に「数量」が入っている列を考えます。
本来は数値だけのはずですが、ユーザーが「10個」などと文字を混ぜて入力してしまうかもしれません。

たとえば、B2 で「数量 × 100 円」の計算をしたいとします。

普通に書くと:

=A2*100

ここで A2 が「10個」などの文字列だと #VALUE! エラーになります。
これも不正入力です。

IFERROR で、
「不正入力なら 0」とすることができます。

=IFERROR(A2*100, 0)

こうしておくと、

  • 正しい数値 → 正常に計算
  • 不正な文字列 → 0(=売上なしなどとして扱う)

というふるまいになります。


不正入力を「目で分かるメッセージ」に変える

エラーのまま見せるのではなく、意味のある文言にする

IFERROR の第 2 引数は数値だけでなく、文字列も指定できます。

たとえば、「不正な入力です」と明示したい場合。

=IFERROR(何らかの計算式, "不正な入力です")

例:商品コード検索の結果がエラーのとき

=IFERROR(
  VLOOKUP(A2, $D$2:$E$100, 2, FALSE),
  "不正なコード"
)

例:数量×単価の計算で入力ミスがあったとき

=IFERROR(
  A2*B2,
  "数量か単価が不正"
)

これで、ユーザーは
「なぜ結果が出ていないのか」「どこが不正なのか」を、
エラー記号ではなく、ちゃんとした日本語で気づけます。


IFERROR を使うときの注意点

1. 「すべてのエラーを同じ扱い」にしてしまう危険もある

IFERROR は、どんなエラーでもまとめて処理します。

  • 本当に想定している不正入力
  • 数式ミスや参照範囲ミスといった“本当は気づきたいエラー”

これらをまとめて「0 にする」「空白にする」
といった使い方をすると、エラーに気づけなくなる ことがあります。

対策として、

  • まずは ISNA / ISERROR で「想定エラーだけ」を IF で処理する
  • どうしても IFERROR を使う場合は、
    第 2 引数に「不正入力」など、気づけるメッセージを書く

など、「見えなくしすぎない」工夫が大事です。

2. 入力チェック用の列を別に作るのもおすすめ

IFERROR で見た目をきれいにするだけでなく、
別列で「入力が不正かどうか」をフラグにするのもよくある手です。

例:

=IFERROR(A2*B2, 0)               ' 表示用(エラーは 0)
=IF(ISERROR(A2*B2), "不正入力", "")  ' チェック用フラグ

見た目は崩さずに、
どこで不正入力が起きているかは別途把握できます。


例題

問題1

C2 ÷ D2 で割合を計算したいが、
D2 が 0 や空白で #DIV/0! になる場合は、代わりに 0 を返したい。
このときの式を書いてください。

=IFERROR(C2/D2, 0)

問題2

A2 の商品コードを D2:E100 から VLOOKUP で検索し、
見つからない(#N/A)などのエラーになった場合は「未登録」と表示したい。
そのための式を書いてください。

=IFERROR(VLOOKUP(A2, $D$2:$E$100, 2, FALSE), "未登録")

問題3

A2 に数量、B2 に単価が入っており、
A2*B2 がエラーになる(文字混入など)場合は 0 を返したい。
C2 に書く式を書いてください。

=IFERROR(A2*B2, 0)

問題4

A2 に入力された値を 1.1 倍したいが、
A2 が不正な入力で計算エラーになった場合は「不正な入力」と表示したい。
そのための式を書いてください。

=IFERROR(A2*1.1, "不正な入力")

問題5

A2:A20 にいろいろな計算式が入っています。
B2 に =IFERROR(A2, 0) と入れて下までコピーしたとき、
A列がエラーの行では B列に何が表示されますか。
また、このような使い方の目的は何ですか(簡単に説明してください)。

(模範的な答え)

  • A列がエラーの行では、B列には 0 が表示される。
  • 目的は「エラーをそのまま表示せず、0 として扱うことで、見た目や集計を崩さないようにすること」。

まとめ

「不正入力の抑止 → IFERROR」のポイントは、

  • ユーザーの“変な入力”が原因のエラーを、
    見た目も意味も分かりやすい値に差し替えること
  • =IFERROR(計算式, エラー時の値) という形で、
    表を“壊さない安全弁”として働かせること
  • ただし「全部黙らせる」のではなく、
    メッセージ表示や別列フラグで“気づける余地”を残すこと

にあります。

IFERROR は、
「エラーを隠す」というより
「ユーザーにとって意味のある形に変換する」ために使う、
と意識してもらえると、ぐっと上手に使えるようになります。

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