IFS関数の使い方|IFのネストからの書き換えと判定順の罠

IFS関数は、条件と値を交互に並べて多段階の判定を1つの式で書く関数です。IF関数を入れ子にした式と結果は同じですが、括弧の重なりが消えるため読みやすくなります。Excel 2019以降で使える関数で、判定は必ず上から順に行われます。

この記事でわかること

  • IFS関数の構文と、使えるバージョンの境目
  • IFの入れ子を機械的にIFSへ書き換える手順
  • 上から順に判定されることで起きる、エラーの出ない間違い
  • 「それ以外」を TRUE で受ける書き方と、書き忘れたときの #N/A
  • 空欄の行が意図せず判定されてしまう原因と直し方


目次

IFS関数の構文と対応バージョン

構文

=IFS(論理式1, 値1, [論理式2, 値2], ...)
引数指定するもの注意点
論理式1判定する条件結果が TRUE か FALSE になる形で書く
値1その条件を満たしたときに返す値文字列は " で囲む。数式も置ける
論理式2以降2つ目以降の条件条件と値は必ずペア。最大127組まで

IF関数と違い、「それ以外」を受ける専用の引数がありません。最後の論理式に TRUE を置くことで代用します。

⚠️ 使えるバージョン

環境IFS
Excel 2016以前使えない
Excel 2019使える
Excel 2021使える
Microsoft 365使える

2016以前の環境で開くと #NAME? になり、数式バーには _xlfn.IFS(...) のように表示されます。社外へ配布するブックや、複数バージョンが混在する職場の共有ファイルでは、IFの入れ子のままにしておくほうが安全です。自分の手元で完結する集計表なら、IFSに寄せる価値があります。

IFS関数の使い方|IFのネストからの書き換えと判定順の罠の解説図1

IFのネストをIFSに書き換える

書き換えは機械的にできます。IFの入れ子は「偽の場合」に次のIFを差し込む形なので、その入れ子を平らに並べ直すだけです。

書き換え前(IFの入れ子)

=IF(B2>=80,"A", IF(B2>=60,"B", IF(B2>=40,"C","D")))

書き換え後(IFS)

=IFS(B2>=80,"A", B2>=60,"B", B2>=40,"C", TRUE,"D")

  1. 入れ子の外側から順に「条件, 値」を取り出して横に並べる
  2. いちばん内側のIFの「偽の場合」を、TRUE, 値 に置き換える
  3. 閉じ括弧をすべて外し、最後に1つだけ付ける

なぜ書き換えるか

結果は同じなので、目的は保守のしやすさの1点です。IFの入れ子は段数が増えるほど括弧の対応を追う必要があり、段を1つ足すときに「どの位置に差し込むか」を数えなければなりません。IFSなら、ペアを1組、正しい位置に挿入するだけで済みます。

⛔ ただし段数が2〜3段なら、書き換えの効果はほとんどありません。書き換えを検討する目安は4段以上です。


⚠️ 判定は上から順に行われる

IFSでいちばん多い間違いは、条件の並べ方です。

IFSは条件を上から順に評価し、最初にTRUEになった時点で確定します。それ以降の条件は評価されません。

やってしまう並べ方

=IFS(B2>=40,"C", B2>=60,"B", B2>=80,"A", TRUE,"D")

85点の行を判定すると、B2>=40 が先に成立するため 「C」 が返ります。「A」には決してたどり着きません。

正しい並べ方

大きいほうから順に並べます。小さいほうから並べるなら、演算子を < に統一して一貫させます。

⚠️ この間違いの厄介なところは、エラーが1つも出ないことです。数式は正常に動き、静かに違う値を返し続けます。しきい値を並べる判定を書いたら、境界の値(この例なら40・60・80と、その前後1)で必ず試してください。

IFS関数の使い方|IFのネストからの書き換えと判定順の罠の解説図2

実務でよく使う4パターン

① 「それ以外」を TRUE で受ける

最後のペアの条件に TRUE を置くと、どの条件にも当てはまらなかった行がここへ落ちます。

=IFS(B2>=80,"A", B2>=60,"B", TRUE,"対象外")

TRUE はそれ自体が常に成立する条件です。必ず最後に置いてください。途中に置くと、それ以降の条件がすべて無視されます。

書き忘れると、どれにも当てはまらない行が #N/A になります。「エラーではなく空欄にしたい」なら TRUE,"" と書きます。

② 空欄の行を先に除外する

未入力のセルは 0 として扱われます。そのため B2<60 のような条件は、空欄の行でもTRUEになります。

=IFS(B2="","", B2>=80,"A", B2>=60,"B", TRUE,"C")

空欄の判定を先頭に置くのが要点です。後ろに書くと、その前の条件で先に拾われてしまいます。

⚠️ 他の数式が "" を返しているセルは、見た目が空でも ISBLANK では空欄と判定されません。数式の結果を含む列を判定するなら B2="" のほうが実態に合います。

③ AND・ORで複数条件を組み合わせる

論理式の位置には、AND関数・OR関数もそのまま置けます。

=IFS(AND(B2>=80,C2>=80),"総合A", OR(B2>=90,C2>=90),"一芸", TRUE,"標準")

条件の組み立て方はIF関数と同じです。ANDは全部満たしたとき、ORはどれか1つを満たしたときに成立します。

④ 返す値に数式を置く

値の位置は文字列に限りません。計算式もセル参照も書けます。

=IFS($C2>=100000, $C2*0.85, $C2>=50000, $C2*0.9, TRUE, $C2)

金額の段階に応じて割引率を変える形です。返す値を数値にしておけば、そのまま合計できます。"0.85" のように引用符を付けると文字列になり、集計対象から外れます。

IFS関数の使い方|IFのネストからの書き換えと判定順の罠の解説図3

うまくいかないときの原因と直し方

症状主な原因直し方
#NAME?Excel 2016以前で開いたIFの入れ子に書き換える
#NAME?文字列を " で囲んでいない値が文字列なら " で囲む
#N/Aどの条件にも当てはまらない行がある最後に TRUE, 値 のペアを足す
段階の判定がおかしい条件の並び順が逆大きいほうから順に並べ直す
途中から結果が全部同じ途中に TRUE を置いているTRUE は最後の1組だけにする
空欄の行に判定が付く空欄が 0 として扱われているB2="" の判定を先頭に置く
数式が受け付けられない条件と値がペアになっていない引数の個数が偶数になっているか数える
合計に含まれない返り値を "1000" と囲んでいる引用符を外して数値で返す
数式が長すぎて読めない段数が多い区分表+VLOOKUPへの置き換えを検討する

長い数式を読みやすくする

数式バーの中で Alt+Enter を押すと改行が入ります。条件のペアごとに改行しておくと、後から並び順を確認しやすくなります。改行は計算結果に影響しません。

数式バーの高さは、右端の下向き矢印か、境界のドラッグで広げられます。


似た関数との使い分け

関数対応バージョン選ぶ場面
IF2016〜2〜3段の分岐。配布用のブック
IFS2019〜4段以上の段階判定を横並びで書く
SWITCH2019〜1つの値を複数の候補と照合する
VLOOKUP(近似一致)2016〜段階が多く、基準を表で管理したい
IFERROR2016〜エラーのときだけ別の値にする

SWITCHとの分かれ道

同じ2019以降の関数ですが、役割が違います。

=IFS(A2="東京","関東", A2="大阪","関西", TRUE,"その他")
=SWITCH(A2, "東京","関東", "大阪","関西", "その他")

大小や複合条件を判定するならIFS、1つの値の等値照合ならSWITCH。SWITCHは最後に既定値を1つ書けるので、TRUE を置く必要がありません。

段が10を超えるなら数式をやめる

区分が10段を超えるようなら、IFSで書き続けるより基準を表にしてVLOOKUP関数の近似一致で引くほうが保守しやすくなります。基準が変わったときに、数式ではなく表の数値を直せば済むためです。

近似一致では、区分表の左端列に各段階の下限値を昇順で並べます。ここでも「上から順」ならぬ「小さい順」という並びの制約がある点は共通です。


よくある質問

Q1:IFSはExcel 2016で使えますか?

使えません。#NAME? になり、数式バーには _xlfn.IFS のように表示されます。2016以前の環境でも開くファイルなら、IF関数の入れ子で書いてください。入れ子は64レベルまで書けるので、段数で困ることはほとんどありません。

Q2:条件はいくつまで書けますか?

条件と値のペアで最大127組です。実際には10組を超えると数式が読めなくなるため、その手前で区分表+VLOOKUPへの切り替えを検討したほうが扱いやすくなります。

Q3:TRUE を書かないとどうなりますか?

どの条件にも当てはまらない行が #N/A になります。エラーを表示させたくないだけなら TRUE,"" を足してください。ただし「該当なし」が想定外なのか想定内なのかで扱いが変わります。データの不備を見つけたい段階では、あえて #N/A を残しておくほうが安全です。

Q4:IFSの中にIFやIFSを入れられますか?

入れられます。ただしIFSを使う理由が「入れ子を平らにすること」なので、入れ子にすると利点が消えます。判定の軸が2つあるなら、作業列を1本立てて軸ごとに分けるほうが読みやすくなります。

Q5:条件を後から1つ追加したいのですが。

追加したい段階の位置に「条件, 値」のペアを1組だけ挿入します。挿入する位置を間違えると、その下の条件が評価されなくなる点だけ注意してください。しきい値を扱う判定なら、追加後に境界の値で結果を確かめるのが確実です。


まとめ

IFSの要点
  • Excel 2019以降。2016以前では #NAME?。配布用ならIFの入れ子のまま
  • IFの入れ子は、外側から順にペアを並べ直すだけで機械的に書き換えられる
  • 判定は上から順。範囲条件は大きいほうから並べる。逆順はエラーが出ずに間違う
  • 「それ以外」は最後に TRUE, 値。書き忘れると #N/A
  • 空欄は 0 扱い。B2="" の判定を先頭に置いて先に逃がす

※関数の対応バージョンはExcelの一般提供時点の情報にもとづいています。お使いの環境や更新プログラムの適用状況により、利用できる関数や表示が異なる場合があります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

はじめまして、白石です。製造業の生産管理で15年、毎日の実績集計と帳票づくりをExcelでやってきました。マクロを組もうとして早々に挫折し、そこからは「関数と表の機能だけでどこまでやれるか」でしのいできた口です。部門では「この集計どうやるの」と聞かれる係になり、聞かれた内容を手元にメモし続けました。そのメモがいつのまにか、関数名ではなくやりたいことから引く形になっていて、それがこのサイトのもとになっています。Excelは同じことをやるのに何通りもやり方があって、しかもバージョンによって使える関数が違います。ここでは実際に動かして確かめた式だけを載せ、つまずきやすいところと使えないバージョンを先に書くようにしています。

目次