概要
「なぜ計算できなかったのか」をユーザーに分かりやすく伝えたいとき、
IFS 関数はとても強力です。
IF だと条件が増えるほど式が長くなりますが、
IFS なら
- 分母が 0
- 入力が空白
- 数値でない
- VLOOKUP が失敗
- その他のエラー
といった 複数の“計算失敗理由”を整理して表示 できます。
ここでは、初心者でも迷わないように
「型」「考え方」「実務でよくあるパターン」を丁寧に解説します。
IFS の基本
IFS の書式
=IFS(条件1, 結果1, 条件2, 結果2, 条件3, 結果3, …)
上から順に条件を評価し、
最初に TRUE になった結果を返す 仕組みです。
つまり、
- まず「分母が 0 か?」
- 次に「空白か?」
- 次に「数値でないか?」
- 最後に「正常なら計算結果」
というように、
“計算失敗理由を順番にチェックする”のに最適です。
パターン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 を使えば、
「なぜ計算できなかったのか」をユーザーに明確に伝えられる
“説明力のあるシート”が作れるようになります。
