Excel関数 逆引き集 | 計算失敗理由を表示 → IFS

Excel
スポンサーリンク

概要

「なぜ計算できなかったのか」をユーザーに分かりやすく伝えたいとき、
IFS 関数はとても強力です。

IF だと条件が増えるほど式が長くなりますが、
IFS なら

  • 分母が 0
  • 入力が空白
  • 数値でない
  • VLOOKUP が失敗
  • その他のエラー

といった 複数の“計算失敗理由”を整理して表示 できます。

ここでは、初心者でも迷わないように
「型」「考え方」「実務でよくあるパターン」を丁寧に解説します。


IFS の基本

IFS の書式

=IFS(条件1, 結果1, 条件2, 結果2, 条件3, 結果3, …)

上から順に条件を評価し、
最初に TRUE になった結果を返す 仕組みです。

つまり、

  1. まず「分母が 0 か?」
  2. 次に「空白か?」
  3. 次に「数値でないか?」
  4. 最後に「正常なら計算結果」

というように、
“計算失敗理由を順番にチェックする”のに最適です。


パターン1:割り算の失敗理由を表示する

分母 0・空白・数値でない・正常 の4段階判定

例:C2 ÷ D2 の計算で、失敗理由を表示したい。

=IFS(
  D2=0, "分母が0です",
  D2="", "分母が未入力です",
  NOT(ISNUMBER(D2)), "分母が数値ではありません",
  TRUE, C2/D2
)

動き:

  • D2=0 → 「分母が0です」
  • D2=”” → 「分母が未入力です」
  • D2 が文字 → 「分母が数値ではありません」
  • それ以外 → 正常に C2/D2 を返す

IFS の最後に TRUE を置くのは「その他すべて」の意味です。


パターン2:VLOOKUP の失敗理由を表示する

#N/A とその他エラーを分けて説明

=IFS(
  ISNA(VLOOKUP(A2, マスタ!A:C, 2, FALSE)), "コード未登録",
  ISERROR(VLOOKUP(A2, マスタ!A:C, 2, FALSE)), "検索エラー",
  TRUE, VLOOKUP(A2, マスタ!A:C, 2, FALSE)
)

動き:

  • #N/A → 「コード未登録」
  • その他のエラー → 「検索エラー」
  • 正常 → 商品名を返す

「エラーの種類別に理由を表示したい」場合に最適です。


パターン3:入力チェック+計算理由をまとめて表示

入力が揃っていないときは理由を返し、揃っていれば計算

例:A2(数量)× B2(単価)で売上を計算したい。

=IFS(
  A2="", "数量が未入力",
  B2="", "単価が未入力",
  NOT(ISNUMBER(A2)), "数量が数値ではありません",
  NOT(ISNUMBER(B2)), "単価が数値ではありません",
  TRUE, A2*B2
)

正常なら売上を返し、
異常なら「どこが問題か」を明確に表示できます。


パターン4:複数条件の“どれが原因か”を説明する

条件が複雑な計算の失敗理由を整理

例:C2 ÷ (D2−E2) の計算で、
D2−E2 が 0 かどうか、入力が揃っているかを判定。

=IFS(
  D2="", "D列が未入力",
  E2="", "E列が未入力",
  D2-E2=0, "分母が0になります",
  TRUE, C2/(D2-E2)
)

複雑な計算でも、
IFS なら“どこが原因か”を順番に説明できます。


パターン5:ログ用の説明メッセージを返す

計算失敗理由をログとして残す

=IFS(
  A2="", "行" & ROW() & ": 入力なし",
  NOT(ISNUMBER(A2)), "行" & ROW() & ": 数値以外の入力",
  A2>1000, "行" & ROW() & ": 異常に大きい値",
  TRUE, "正常 (" & A2 & ")"
)

ログ列として使えば、
後で FILTER で「異常行だけ抽出」もできます。


例題

問題1

C2 ÷ D2 を計算したい。
D2 が 0 のときは「分母0」、
D2 が空白のときは「未入力」、
それ以外は C2÷D2 を返す IFS の式を書いてください。

=IFS(
  D2=0, "分母0",
  D2="", "未入力",
  TRUE, C2/D2
)

問題2

A2 の商品コードを VLOOKUP したい。
#N/A のときは「未登録」、
その他のエラーは「検索エラー」、
正常なら結果を返す式を書いてください。

=IFS(
  ISNA(VLOOKUP(A2, マスタ!A:C, 2, FALSE)), "未登録",
  ISERROR(VLOOKUP(A2, マスタ!A:C, 2, FALSE)), "検索エラー",
  TRUE, VLOOKUP(A2, マスタ!A:C, 2, FALSE)
)

問題3

A2(数量)と B2(単価)があり、
数量が空白なら「数量なし」、
単価が空白なら「単価なし」、
どちらも数値なら A2×B2 を返す式を書いてください。

=IFS(
  A2="", "数量なし",
  B2="", "単価なし",
  TRUE, A2*B2
)

問題4

C2 ÷ (D2−E2) を計算したい。
D2 または E2 が空白なら「入力不足」、
D2−E2 が 0 なら「分母0」、
それ以外は計算結果を返す式を書いてください。

=IFS(
  OR(D2="", E2=""), "入力不足",
  D2-E2=0, "分母0",
  TRUE, C2/(D2-E2)
)

問題5

A2 の値が 0〜100 の範囲外なら「異常値」、
数値でないなら「不正入力」、
正常なら A2 を返す IFS の式を書いてください。

=IFS(
  NOT(ISNUMBER(A2)), "不正入力",
  OR(A2<0, A2>100), "異常値",
  TRUE, A2
)

まとめ

「計算失敗理由を表示 → IFS」のポイントは次の通りです。

  • IFS は 複数の条件を“上から順に”評価 できる
  • 計算前に「どこが問題か」を丁寧に説明できる
  • IF の入れ子より読みやすく、修正しやすい
  • エラーを隠すのではなく“理由を伝える”ことで品質が上がる

まずはこの型を覚えておくと便利です。

=IFS(
  条件1, "理由1",
  条件2, "理由2",
  …
  TRUE, 正常時の計算
)

IFS を使えば、
「なぜ計算できなかったのか」をユーザーに明確に伝えられる
“説明力のあるシート”が作れるようになります。

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