スプレッドシートのIF・IFS・IFERROR・IFNAの使い分け完全ガイド|条件分岐フローチャート付き

スポンサーリンク

「IFはわかるけど、IFSとどう違うの?」「VLOOKUPのエラー、IFERRORとIFNAどっちで消すべき?」。スプレッドシートで条件分岐を書いていると、毎回こんな迷いにぶつかりますよね。

そのたびに別々の記事を読み比べていると、結局「自分の数式にはどれを使えばいいか」が決まらないまま時間だけが過ぎてしまいます。

この記事では、Googleスプレッドシートの条件分岐に登場する6つの関数(IF・IFS・IFERROR・IFNA・AND・OR)を1ページで横串に整理します。選び方フローチャート、6関数の比較表、実務でよく使う5つの組み合わせパターンまでまとめて確認できますよ。

スプレッドシートの条件分岐関数は6つで足りる

スプレッドシートで「条件によって表示を変える」「エラーをきれいに処理する」シーンは、実は6つの関数でほぼ全部カバーできます。

IF・IFS・IFERROR・IFNA・AND・ORの役割

それぞれの役割をひとことで説明すると、次のとおりです。

  • IF:条件が1つのときに、結果を2つに分岐させる
  • IFS:条件が複数あるときに、結果をフラットに分岐させる
  • IFERROR:数式がエラーになったとき、すべてのエラーを代替値に置き換える
  • IFNA:数式が #N/A エラーになったときだけ、代替値に置き換える
  • AND:複数の条件をすべて満たすときに TRUE を返す
  • OR:複数の条件のいずれかを満たすときに TRUE を返す

まずは「結果を分岐させる関数」と「エラーを処理する関数」の2グループに分かれていることを押さえてみてください。

なぜこの6関数で「迷いどころ」を全部カバーできるか

実務で条件分岐に迷う場面は、突き詰めると次の3つに集約されます。

  1. 条件が1つか、複数か
  2. 結果を分岐したいのか、エラーを処理したいのか
  3. エラー処理の対象は、すべてのエラーか、それとも #N/A だけか

この3つの軸さえ決まれば、6関数のうちの1つにたどり着けます。逆にいうと、迷子になる原因の多くは「自分が今どの軸で考えているか」が整理できていないからなんですよね。

各関数の詳しい使い方は、それぞれの個別記事にまとまっています。

IF・IFS・IFERROR・IFNAの違いを1枚の比較表で整理

最初に、6関数の機能を1枚にまとめた比較表を見てみましょう。「どの関数を選ぶか」を判断するときの早見表として使ってください。

6関数の機能比較表

関数主な目的条件数戻り値エラー処理Excel互換
IF結果を2分岐1つTRUE値 / FALSE値しないあり
IFS結果を3分岐以上複数最初に TRUE になった値しない(全FALSEで #N/A)Excel 2019・365以降
IFERROR全エラーの非表示元の値 / 代替値する(全エラー)あり
IFNA#N/A だけ非表示元の値 / 代替値する(#N/A のみ)あり
AND複数条件を「すべて満たす」で結合複数TRUE / FALSEしないあり
OR複数条件を「いずれか満たす」で結合複数TRUE / FALSEしないあり

ポイントは「目的」と「条件数」の組み合わせで関数が決まる、というところです。

「結果を分岐させる関数」と「エラーを処理する関数」の境界線

6関数のうち、IF・IFS・AND・ORの4つは結果を分岐させる関数です。論理式を評価して、その結果に応じた値を返してくれます。

一方、IFERROR・IFNAの2つはエラーを処理する関数です。数式がエラーになったときの代替値を指定する役割しかありません。

この境界線を意識すると、たとえば「VLOOKUPの#N/Aを”該当なし”と表示したい」場面で迷わずに済みます。エラー処理が目的なら IFERROR か IFNA、結果の分岐が目的なら IF か IFS、というふうに迷いなく選べますよ。

TIP

ANDとORは単体だと TRUE / FALSE しか返しません。値を分岐させたいときは、必ず IF や IFS と組み合わせて使うのがポイントです。

迷ったらこのフローチャート|条件分岐関数の選び方

ここからは、3ステップで6関数のうちの1つに絞り込むフローチャートを紹介します。

3ステップで使う関数を絞り込む

質問は3つだけです。

  1. 目的は「結果の分岐」?それとも「エラー処理」?
  • 結果の分岐 → ステップ2へ
  • エラー処理 → ステップ3へ
  1. 条件は1つだけ?それとも複数?
  • 1つだけ → IF を使う
  • 複数 → IFS を使う(または IF + AND/OR の組み合わせ)
  1. 対象は「すべてのエラー」?それとも「#N/A だけ」?
  • すべてのエラーをまとめて処理 → IFERROR
  • #N/A だけピンポイントで処理 → IFNA

ANDとORは「条件が複数」のステップ2で「IFと組み合わせる関数」として登場します。単独で関数を選ぶ位置にはありませんよ。

フローチャート(Mermaid図解)

flowchart TD
    Start[スプレッドシートで<br>条件分岐したい] --> Q1{目的は?}
    Q1 -->|結果の分岐| Q2{条件はいくつ?}
    Q1 -->|エラー処理| Q3{対象のエラーは?}
    Q2 -->|1つ| IF[IF関数]
    Q2 -->|複数| IFS[IFS関数<br>または IF+AND/OR]
    Q3 -->|すべて| IFERROR[IFERROR関数]
    Q3 -->|#N/Aのみ| IFNA[IFNA関数]

このフローを通せば、6関数のどれを使うかが必ず1つに決まります。

参考までに、各関数のさらに詳しい使い方は個別記事にまとまっています。 IF関数の基本IFS関数のフラットな書き方 もあわせてどうぞ。

実務でよく使う5つの組み合わせパターン

ここからは、実務でよく登場する5つのパターンを数式付きで紹介します。受注管理表や成績表など、ほぼ毎日使うシーンばかりですよ。

パターン1:IF + AND/ORで複数条件を1つにまとめる

「在庫が10個以上 かつ 単価が1000円以下のときだけ販売可とする」のように、複数の条件をすべて満たす場合は AND を使います。

=IF(AND(B2>=10, C2<=1000), "販売可", "停止")

「在庫が0 または 廃番のとき停止」のように、いずれかを満たす場合は OR を使います。

=IF(OR(B2=0, D2="廃番"), "停止", "販売可")

ANDとORは IF の中で論理式の役割を果たすだけなので、戻り値そのものを変えたいときは必ず IF と組み合わせてくださいね。

NOTE

ARRAYFORMULAと組み合わせる場合は、AND の代わりに 、OR の代わりに + 演算子を使う必要があります。=ARRAYFORMULA(IF((B2:B>=80)(C2:C>=80), "合格", "不合格")) のように書きます。

詳しい組み合わせパターンは AND関数OR関数 の個別記事も参照してください。

パターン2:IFERROR + VLOOKUPでエラーを一括非表示

VLOOKUPで単価マスタを引いてくる定番パターンです。マスタにない商品コードを渡すと #N/A が返るので、IFERROR で隠してしまいます。

=IFERROR(VLOOKUP(A2, マスタ!A:B, 2, FALSE), "マスタ未登録")

このパターンの良さは、列番号ミスや参照範囲のずれなど、どんなエラーでも代替値に置き換えてくれるところです。

ただし副作用もあります。本当は数式の組み立てミスで #REF! が出ているのに、それも「マスタ未登録」と表示してしまうので、原因究明が遅れる可能性があるんですよね。

「とにかくエラーを表に出したくない」場面では IFERROR が便利ですが、検証中の数式では使わないほうが安全です。

詳しい組み合わせは IFERROR関数の使い方VLOOKUPで別シートを参照する完全ガイド にまとまっています。

パターン3:IFNA + XLOOKUPで「マスタ未登録だけ」をピンポイント代替

「マスタにない商品だけは”未登録”と表示したい。でも、数式ミスのエラーは見逃したくない」。そんなときに使うのが IFNA + XLOOKUP の組み合わせです。

=IFNA(XLOOKUP(A2, マスタ!A:A, マスタ!B:B), "未登録")

IFNA は #N/A エラーだけを代替値に置き換える関数です。#REF! や #VALUE! などの数式ミス起因のエラーはそのまま残るので、すぐに気づいて修正できます。

VLOOKUPの代わりにXLOOKUPを使う理由は、XLOOKUPなら範囲指定が直感的で、見つからないときの挙動が標準で IFNA と相性が良いからです。XLOOKUPの第4引数で代替値を指定する方法もあります。ただし IFNAでくるむ書き方のほうが「エラー処理を分離している」ことが式から読み取りやすいですよ。

TIP

「IFERRORを使うか、IFNAを使うか」で迷ったら「数式のミスにも気づきたいか?」と自問してみてください。気づきたいなら IFNA、隠したいなら IFERROR、と考えるとシンプルです。

詳しくは IFNA関数の使い方VLOOKUP・XLOOKUP・INDEX/MATCH 使い分けガイド もあわせてどうぞ。

パターン4:IFS + ANDでネストレスのランク判定

「売上が100万円以上 かつ 達成率100%以上ならS」「売上が100万円以上 かつ 達成率80%以上ならA」「それ以外はB」のような複雑な分岐は、IFをネストする代わりに IFS + AND の組み合わせがすっきりします。

=IFS(
  AND(B2>=1000000, C2>=1), "S",
  AND(B2>=1000000, C2>=0.8), "A",
  TRUE, "B"
)

ポイントは末尾の TRUE, "B" です。IFS は「すべての条件が FALSE のとき #N/A を返す」という挙動があるので、最後に必ずデフォルト値を置いておくのがコツですよ。

複数条件をフラットに並べたい場面では、IFS は本当に頼りになります。詳しい構文ルールは IFS関数の使い方 にまとまっています。

パターン5:IFを3段ネストした数式をIFSに書き直す(ビフォーアフター)

最後は、多くの人が一度はやらかす「IF 3段ネスト」のリファクタリングです。

ビフォー(IF 3段ネスト)

=IF(B2>=90, "優", IF(B2>=70, "良", IF(B2>=60, "可", "不可")))

ぱっと見、何の判定をしているのかわかりませんよね。括弧の数も多くて、条件を1つ追加するだけでも壊れる可能性があります。

アフター(IFSでフラット化)

=IFS(B2>=90, "優", B2>=70, "良", B2>=60, "可", TRUE, "不可")

行数が減るだけでなく、上から順に条件と返り値を読めます。「90点以上は優、70点以上は良、60点以上は可、それ以外は不可」と、式そのものが説明文のようになりますね。

書き換えのコツは次の3ステップです。

  1. ネストしている IF をすべて並べて条件と値を抜き出す
  2. =IFS(条件1, 値1, 条件2, 値2, ...) の形に並べ直す
  3. 最後に TRUE, "デフォルト値" を入れて #N/A を防ぐ

「IFを3段以上ネストしているな」と思ったら、まずは IFS への書き換えを検討してみてくださいね。

よくある間違いと対処法

最後に、6関数を使い始めたときに陥りがちな落とし穴を3つ紹介します。

IFERRORで本当のエラーまで隠してしまう問題

IFERROR は便利な反面、数式ミス起因のエラーまで隠してしまう副作用があります。たとえば次の数式を見てください。

=IFERROR(VLOOKUP(A2, マスタ!A:B, 5, FALSE), "該当なし")

第3引数の列番号が 5 になっていますが、マスタの範囲は2列しかないとします。本来なら #REF! エラーが出るはずです。ところが IFERROR が「該当なし」と表示してしまうので、ミスに気づくのが遅れがちです。

対処法は次のとおりです。

  • 検証中の数式では IFERROR をかけずに、エラーが出るまま残す
  • 完成した数式でも、可能なら IFNA に切り替えて #N/A だけ処理する
  • IFERRORを使う場合は、代替値を「マスタ未登録」など限定的な意味の文字列にしておくと、後で見たとき「ここはVLOOKUPの該当なし対応だな」と思い出しやすい

IFSの末尾TRUE漏れで#N/Aになる問題

IFS は便利ですが、すべての条件が FALSE のとき #N/A を返すという落とし穴があります。

=IFS(B2>=90, "優", B2>=70, "良", B2>=60, "可")

この式は60点未満のとき #N/A になります。IF と違って「FALSE値」がないので、デフォルト値を明示する必要があるんですよね。

対処法は末尾に TRUE, "デフォルト値" を入れることです。

=IFS(B2>=90, "優", B2>=70, "良", B2>=60, "可", TRUE, "不可")

TRUE は「上記すべての条件が FALSE だった場合」を意味するパターンマッチです。IFS のお作法として覚えておくと便利ですよ。

AND/ORを単体で使ってTRUE/FALSEだけが返るケース

「複数条件を判定したい!」と意気込んで AND だけを書いてしまうケースです。

=AND(B2>=10, C2<=1000)

これだと TRUE / FALSE しか返ってきません。表のセルに TRUE と書いてあっても「で、結局どうしろと?」となってしまいますよね。

対処法はシンプルで、必ず IF で包んで返り値を分岐させます。

=IF(AND(B2>=10, C2<=1000), "販売可", "停止")

ANDとORは「条件式を組み立てる部品」、IFは「最終的な値を返す入れ物」というイメージで使い分けてください。

スプレッドシート 条件分岐関数 使い分けまとめ

スプレッドシートの条件分岐は、6関数(IF・IFS・IFERROR・IFNA・AND・OR)で必要十分です。

「条件数 → 目的 → エラー範囲」の3段階で決める

迷ったときの判断手順は次のとおりです。

  1. 目的が「結果の分岐」か「エラー処理」かを決める
  2. 結果の分岐なら条件数(1つ or 複数)で IF か IFS かを選ぶ
  3. エラー処理なら対象範囲(すべて or #N/Aのみ)で IFERROR か IFNA かを選ぶ
  4. 複数条件は AND/OR を IF や IFS の中で部品として使う

この3段階をたどるだけで、関数選びで迷うことはほぼなくなりますよ。

個別記事への深掘り誘導

それぞれの関数の構文・引数・実務サンプルは、個別記事にもっと詳しくまとめています。

VLOOKUP との組み合わせをもっと深掘りしたい方は、 VLOOKUP・XLOOKUP・INDEX/MATCH 使い分けガイドVLOOKUPで別シートを参照する完全ガイド もあわせてどうぞ。

「IFを書きすぎてもう何の判定をしているか自分でもわからない」状態は、IFS への書き換えで一気に整理できます。まずは手元の壊れかけ数式を1つ、IFS で書き直してみてくださいね。

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