IF関数=業務ロジックの「翻訳機」|まず押さえるべき考え方と設計の前提
ExcelのIF関数って「条件で結果を返すだけ」でしょ?と思われがちですが、実務では業務ルール(=業務ロジック)を、誰でも実行できる形に翻訳する装置になります。申請の承認可否、手当の支給条件、売上計上タイミング、在庫の補充判断…こうしたルールを“表”に落とし込み、同じ入力なら必ず同じ判断が返るようにする。これがIF関数の役割です。
ただし、IFを「その場しのぎで書き足す」と、すぐに破綻します。分岐が増えるほど読みづらくなり、例外が増えるほどバグりやすくなるからです。だから先に押さえるべきは関数テクではなく、設計の前提です。
1) そもそも“何を判定したいのか”を1文で固定する
まずはIFが答える問いを1つに絞ります。たとえば次のように書ける状態にします。
- 「この申請は承認?差し戻し?」
- 「この取引は割引対象?対象外?」
- 「この勤怠は残業時間を計上?しない?」
ここが曖昧だと、IFの中に「判定」と「計算」と「例外処理」が混ざって、後から誰も直せない“ブラックボックス”になります。
2) 入力(条件)と出力(結果)を先に表で整理する
IFは「=IF(条件, 真のとき, 偽のとき)」ですが、条件をいきなり式で書かないのがコツです。先に入力項目と出力パターンを棚卸しします。
- 入力:雇用形態/勤務時間/曜日/申請種別/金額/締日…
- 出力:支給/不支給、Aランク/Bランク、手当額、メッセージ…
この時点で「入力が足りない」「出力の定義が曖昧(Aって何?)」といった業務側の穴が見つかります。IFは便利ですが、曖昧なルールを勝手に補完してくれません。むしろ曖昧さをバグとして露呈させます。
3) 例外・優先順位を決める(ここを決めないと必ず揉める)
業務ルールはたいてい「原則+例外」です。ここで重要なのが優先順位。
たとえば「10万円以上は割引」でも「ただし新規顧客は対象外」なのか「新規でも10万円以上なら対象」なのかで結果が変わります。IFの設計では、上に書いた条件が先に勝つ(先勝ち)ことが多いので、例外をどちらに置くかはロジックそのものです。
4) “判断”と“計算”を分けるのが安全(初心者ほど混ぜがち)
実務で壊れやすいのは、IFの中でいきなり金額計算までやってしまうケースです。おすすめは次の分離です。
- 判定列:条件を満たすか(TRUE/FALSE、OK/NG、区分A/Bなど)
- 計算列:判定列の結果を使って金額や文言を出す
こうすると、テストが一気に楽になります。「判定は合ってるけど計算が違う」のように原因を切り分けできるからです。
5) テスト前提で作る(“正しさ”は後から証明できない)
IFは書いた瞬間は動きます。でもそれが業務として正しいかは別問題。だから最初からテストケースを用意します。
- 通常ケース(原則どおり)
- 境界値(ちょうど10万円、ちょうど締日、0時間など)
- 例外(対象外条件、エラー入力、空白)
「この3パターンで結果が合えばOK」という状態にしてから式を組むと、変更が入っても崩れにくいです。20代のうちにここを習慣化すると、Excelが“作業ツール”から“設計ツール”に変わります。
この章のまとめはシンプルです。IF関数は、業務ロジックを式にする前に、言葉と表で設計する。次章からは、その設計を崩さずに実装するための「安全な型(パターン)」を、具体的な分岐の組み方として整理していきます。
基本パターン編|単純分岐・多段IF・ネストを安全に組む型
1章で「業務ロジックを言葉と表で設計してからIFを書く」と整理しました。ここからは実装フェーズ。ポイントは、“動く式”ではなく“壊れにくい式”の型で組むことです。とくに20代の現場だと、後から条件が増えたり、別の人に引き継がれたりが普通に起きます。最初から安全な並べ方で作っておくと、手戻りが激減します。
1) 単純分岐(IFの最小単位)|まずは「はい/いいえ」だけにする
基本はこれだけです。
=IF(条件, 真の結果, 偽の結果)
実務でのコツは、条件を“文章に戻せる形”で書くこと。例えば「金額が10万円以上なら割引対象」はこう。
=IF(A2>=100000,"割引","通常")
さらに安全にするなら、真偽を先に作ってから結果に変換します(1章の「判断と計算を分ける」に沿うやり方)。
- 判定列:
=A2>=100000(TRUE/FALSE) - 結果列:
=IF(B2,"割引","通常")
2) 多段IF(段階評価)|「範囲」を上から順に並べる
評価ランクや手当の等級など、段階があるとIFが増えます。ここでの型は「上位から順に判定」です。例えば点数でA/B/Cを返すなら、上から当てていきます。
=IF(A2>=80,"A",
IF(A2>=60,"B",
"C"))
理由はシンプルで、条件の重なりを吸収しやすいからです。もし下から書くと「60点以上」を先に拾ってしまい、80点以上が到達しません。業務ルールにありがちな「含む/含まない」も、上から並べるとミスが減ります。
3) ネストを安全にする型|“例外→原則”の順で、最後は必ず受け皿を置く
ネスト(IFの入れ子)が崩れる典型は、「途中で条件が漏れる」「空白や欠損値で想定外の判定になる」ケースです。そこで型を固定します。
- 最優先の例外(入力不足、対象外、エラー扱い)
- 原則の判定(通常ルール)
- 最後の受け皿(どれにも当てはまらないとき)
例:申請ステータスを返す(入力が空なら確認依頼、金額が高ければ上長承認、それ以外は通常承認)。
=IF(A2="","要確認(未入力)",
IF(A2>=300000,"上長承認",
"通常承認"))
最後の受け皿(この例だと「通常承認」)を必ず置くと、想定外データが来ても“沈黙しない”式になります。沈黙=空白返しを多用すると、後工程で「処理されてないのに気づけない」事故が起きがちです。
4) “読めるIF”にする小技|同じ判定は一度だけ書く
ネストが長くなると、同じ条件を何度も書きがちですが、保守性が落ちます。おすすめは判定を別セルに切り出すこと。たとえば「大口=10万以上」をB列に置けば、後続はB列を見るだけになります。
(B2)=A2>=100000
(C2)=IF(B2,"大口","通常")
こうしておくと、閾値が変わったときも修正箇所が1つで済みます。
ここまでが「IFを安全に組む基本形」です。次章では、さらに壊れやすいAND/ORの絡みや境界値、そして例外の優先順位をどう整理すれば破綻しないかを、設計パターンとして掘り下げます。
条件整理パターン編|AND/OR・境界値・例外(優先順位)を破綻させない設計
IFが急に難しくなるのは、「条件が増える」瞬間ではなく、条件同士が絡み始める瞬間です。たとえば「AかつB」「AまたはB」「ちょうど10万円はどっち?」「原則OKだけどこの場合だけNG」——ここを雑に書くと、式は動いても業務として間違います。この章は、破綻ポイントを整理してから実装する型をまとめます。
1) AND/ORは“日本語の括弧”を先に書く|混ぜるほど事故る
まずやるべきは、条件を式にする前に日本語で括弧つきにすることです。
- 例:承認条件=「(金額が10万以上 かつ 部署が営業)または(役職が部長)」
これをそのままExcelに移すと、こうなります。
=IF( OR( AND(A2>=100000, B2="営業"), C2="部長"), "承認", "差し戻し")
コツは、ANDとORを1行に混在させないこと。混ざるなら、上の例のようにANDの塊を作ってからORで束ねます(括弧を作るイメージ)。読めるだけでなく、後から条件追加するときも「どの塊に足すか」が明確になります。
2) 境界値は“ルールを言い切る”|> と >= を人間の言葉で固定する
実務で一番揉めるのが境界値です。「10万円以上」が10万円ちょうどを含むのか、含まないのか。ここを曖昧にすると、担当者ごとに解釈が割れて数字が合いません。
型としては、範囲を重ねない(どれか1つに必ず落ちる)ように切ります。例:ランク判定。
- A:80以上
- B:60以上80未満
- C:60未満
=IF(A2>=80,"A",
IF(A2>=60,"B",
"C"))
さらに事故が減るのは、境界値のテストケースを先に作ることです。
- 59 / 60 / 79 / 80 を入れて、期待結果が合うか確認
- 金額なら 99999 / 100000 / 100001 を必ず試す
境界値は「合ってるはず」で通すと、後で精算・監査系で痛い目を見ます。若手のうちに“境界は必ず試す”を癖にすると強いです。
3) 例外(優先順位)は“ゲート方式”で上から潰す|先勝ちを設計に使う
例外があるロジックは、いきなり原則を書かずに通行止め(ゲート)から並べると破綻しません。
具体的には次の順番です。
- 入力不備・判定不能(空白、エラー、マスタ未登録)
- 最優先のNG(対象外)
- 特例OK(例外的に通す条件)
- 原則OK/NG
例:「原則:10万円以上は割引」「例外:社員は割引対象外」「特例:ただし社員でも役員は割引OK」なら、優先順位をそのまま上から書きます。
=IF(A2="","要確認(未入力)",
IF(B2="社員",
IF(C2="役員","割引", "対象外"),
IF(A2>=100000,"割引","通常")))
ポイントは、“例外をどこに置くか”が設計そのものということ。IFは上に書いた条件が先に勝つので、ゲートの順番を固定すると「例外を足したせいで原則が壊れる」を防げます。
4) 条件が多いときは“条件を部品化”して見通しを作る
AND/ORや例外が絡むと、1セルに全部詰め込むだけで読みづらくなります。そこでおすすめなのが、判定を部品(TRUE/FALSE)に分ける方法です。
- (D2)大口:
=A2>=100000 - (E2)社員:
=B2="社員" - (F2)役員:
=C2="役員" - (G2)割引可:
=OR(AND(D2,NOT(E2)),AND(E2,F2)) - (H2)結果:
=IF(G2,"割引","通常")
この形だと、どこで判断がひっくり返ったかが追えます。つまり、デバッグできるIFになります。次章では、この「部品化」をさらに進めて、IFS/SWITCHやテーブル駆動で“IF地獄”をそもそも回避する置き換えパターンに入ります。
置き換えパターン編|IFS/SWITCH/VLOOKUP(XLOOKUP)/テーブル駆動で“IF地獄”を抜ける
ここまでで「IFを壊さずに組む型」は押さえました。ただ、条件が増え続ける現場では、どうしてもネストが深くなり、読みにくさが限界に来ます。そこで4章は発想を変えて、IFを減らす(置き換える)パターンを紹介します。ポイントは、ロジックを“式”から“構造(表)”に逃がすこと。これだけで保守コストが一段下がります。
1) IFS:段階評価は「上から当てる」をそのまま短くする
多段IF(ランク判定など)は、IFSで見た目がかなりスッキリします。
=IFS(A2>=80,"A", A2>=60,"B", TRUE,"C")
- 上から順に「真になったらそこで確定」
- 最後はTRUEを受け皿にして、想定外でも沈黙しない
ネストのカッコ地獄が消えるので、レビューされやすい式になります。
2) SWITCH:区分コード→結果の変換は「辞書化」する
申請種別やステータスなど、値が離散的(A/B/C、1/2/3)ならSWITCHが強いです。
=SWITCH(B2,
"A","通常承認",
"B","上長承認",
"C","差し戻し",
"要確認(未定義)")
IFで「B2=”A”」を並べるより、対応表を書いている感覚に近く、漏れにも気づきやすい。コード体系が増えがちな業務ほど効きます。
3) VLOOKUP/XLOOKUP:条件分岐を“マスタ参照”に変える
「このコードならこの単価」「この社員区分ならこの手当率」みたいなルールは、IFで書くより表で持つのが正攻法です。式は参照に徹します。
=XLOOKUP(C2, マスタ[区分], マスタ[手当額], "未登録")
これが効くのは、ルール変更時に式を直さずに表を差し替えられるから。監査や引き継ぎでも「どの表が根拠か」が明確になります(式の中に根拠が埋まらない)。
4) テーブル駆動:条件の組み合わせは「ロジックを表に追い出す」
AND/ORが絡み、パターンが増えたら最終的にここです。やり方はシンプルで、入力から“キー”を作り、キーで結果表を引く。
- キー列:
=D2&"_"&E2(例:雇用形態_役職) - 結果:
=XLOOKUP(キー, ルール表[キー], ルール表[結果], "要確認")
すると、例外追加は「表に1行足す」で済みます。IFだと例外を差し込む位置(優先順位)で事故りますが、テーブル駆動なら優先順位も列として管理できます(例:優先度の高い行から当てる、など)。
まとめると、IFS=段階、SWITCH=区分、LOOKUP=マスタ、テーブル駆動=組み合わせ。IFを“頑張って読みやすくする”から、“そもそもIFを持たない”へ。次章では、この仕組みを運用で壊さないための命名・可視化・テスト観点に進みます。
運用・拡張パターン編|変更に強い命名・可視化・テスト観点と保守のコツ
IF(やIFS/SWITCH、テーブル駆動)を組んだ瞬間は完成に見えますが、実務はここからが本番です。ルール変更、例外追加、担当交代——この3つが来ても崩れないように、「読める」「追える」「試せる」状態で運用するのが5章のゴールです。
1) 変更に強い命名|“判定セル”に日本語の意味を持たせる
3章で出した「判定を部品化(TRUE/FALSEに分ける)」は、運用面でも強力です。コツは、部品に意味が読める名前を付けること。
- 列見出し例:未入力?/対象外?/大口?/例外OK?/最終判定
- 名前の型:「名詞+?」(TRUE/FALSEが自然に読める)
例えば「大口=10万以上」が変わっても、直すのは 大口? の列だけ。結果側の式は触らずに済みます。若手がやりがちな「式の中に閾値が散らばる」状態を避けられます。
2) 可視化パターン|“どの条件で決まったか”をログとして残す
保守で一番詰むのは、「なぜこの結果になった?」が追えないことです。そこでおすすめが、結果と一緒に理由(判定根拠)も返す設計。
- 結果列:承認/差し戻し
- 理由列:未入力/対象外/例外OK/原則OK…
IFの先勝ち(上に書いた条件が勝つ)を利用して、理由を先に確定させます。
=IFS(
A2="","未入力",
B2="社員","対象外",
AND(B2="社員",C2="役員"),"例外OK",
A2>=100000,"原則OK",
TRUE,"その他")
これがあるだけで、問い合わせ対応が速くなります。「この人だけ割引にならない」→理由セルを見れば一発、という状態を作れます。
3) テスト観点の型|“境界・例外・未入力”をセットで持つ
1章で「テスト前提で作る」が出ましたが、運用ではテストケースを資産化します。おすすめは別シートに「入力→期待結果→実結果→OK/NG」を置くやり方です。
- 境界:99999 / 100000 / 100001
- 例外:社員、役員など優先順位が絡む値
- 未入力・異常:空白、0、マスタ未登録
結果セルと理由セルの両方をチェックすれば、「結果は合ってるけど根拠がズレてる(将来の変更で壊れる予兆)」も拾えます。
4) 保守のコツ|“直す場所を1か所に寄せる”運用ルールを作る
最後に、変更を安全に受けるための実務ルールです。
- 閾値・対応表はマスタ(表)に寄せる(式に直書きしない)
- 例外追加は「式に差し込み」ではなく表に1行追加を優先(4章のテーブル駆動が効く)
- 変更したらテストシートだけ回せば良い状態にする(属人化を潰す)
IFは書ける人がいるだけでは回りません。誰が触っても壊れない形にして初めて、業務ロジックとして“使える”。命名・理由の可視化・テストの3点セットで、IF(とその置き換えパターン)を運用に耐える設計へ仕上げましょう。


コメント