IFS関数の使い方|条件が3つ以上あるときの分岐

執筆者:

カテゴリ:

IFSは、複数の条件を上から順に判定して、最初に当てはまったものを返す関数です。

IF を何重にも入れ子にする書き方の置き換えとして使います。やっていることは同じですが、括弧の対応を数えなくて済むぶん、書くのも直すのも圧倒的に楽になります。

書式

=IFS(条件1, 値1, 条件2, 値2, 条件3, 値3, ...)

条件と値をペアで並べるだけです。ペアはいくつでも増やせます。

IFのネストとの比較

同じ判定を両方の書き方で並べてみます。

IFのネスト

=IF(A2>=90, "A", IF(A2>=80, "B", IF(A2>=70, "C", "D")))

IFS

=IFS(A2>=90, "A", A2>=80, "B", A2>=70, "C", TRUE, "D")

読みやすさの差は、条件が増えるほど広がります。IFのネストは末尾に閉じ括弧が並び、1つ足すだけでも数え直しが必要です。IFSは行末にペアを足すだけで済みます。

上から順に判定される

IFSで最も重要なのがここです。条件は書いた順に評価され、最初に TRUE になったところで止まります。

そのため、判定の順番を間違えると結果が壊れます。

=IFS(A2>=70, "C", A2>=80, "B", A2>=90, "A")   ← 誤り

これだと95点でも最初の A2>=70 に当てはまるので「C」が返ります。以降の条件は評価されません。

数値の範囲で分けるときは、厳しい順(大きい順)に並べる。 これが鉄則です。

逆に、この性質を利用すれば範囲の上限を書かずに済みます。「80以上90未満」を AND(A2>=80, A2<90) と書く必要はありません。90以上の条件を先に書いておけば、そこを通過した時点で90未満が保証されるからです。

最後の受け皿を必ず書く

どの条件にも当てはまらなかった場合、IFSは #N/A を返します。

=IFS(A2>=90, "A", A2>=80, "B")

70点だと #N/A です。これを避けるには、最後の条件に TRUE を置きます。

=IFS(A2>=90, "A", A2>=80, "B", TRUE, "その他")

TRUE は常に成立するので、ここまで来たものは全部これに落ちます。IFにおける「偽の場合」に相当する受け皿です。

IFSを書いたら必ず TRUE の行を付ける、と習慣にしておくと事故が減ります。

実用例

金額から手数料区分を出す

=IFS(A2>=100000, "無料", A2>=50000, "300円", A2>=10000, "500円", TRUE, "800円")

在庫数からステータスを出す

=IFS(A2=0, "在庫切れ", A2<=5, "残りわずか", A2<=20, "在庫あり", TRUE, "十分")

文字列で振り分ける

=IFS(A2="東京", "首都圏", A2="神奈川", "首都圏", A2="大阪", "関西", TRUE, "その他")

ただし、この形(1つの値を複数パターンで振り分ける)は SWITCH のほうが短く書けます。

=SWITCH(A2, "東京", "首都圏", "神奈川", "首都圏", "大阪", "関西", "その他")

比較演算子を使うならIFS、値の一致だけならSWITCH、と覚えておくと選びやすいです。

複数条件を組み合わせる

条件の部分には ANDOR をそのまま入れられます。

=IFS(AND(A2>=80, B2>=80), "総合A",
     OR(A2>=80, B2>=80), "片方A",
     TRUE, "その他")

条件が多すぎるときは表にする

条件が10を超えたら、IFSでも読みづらくなります。その場合は判定表を別シートに作り、XLOOKUP で引くほうが保守しやすくなります。

下限 区分
90 A
80 B
70 C
0 D

数式は1本で済み、区分を追加したいときは表に1行足すだけです。数式を触らずに運用できるのが最大の利点です。

エラーの対処

#N/A が出る

どの条件にも当てはまっていません。最後に TRUE, "その他" を足してください。

#N/A が出る(引数の数)

条件と値がペアになっていません。引数の数が奇数だとこうなります。カンマの数を確認してください。長い数式では、Alt+改行で条件ごとに改行しておくと発見しやすくなります。

意図と違う値が返る

条件の並び順を疑ってください。緩い条件が先頭にあると、そこで全部止まります。

まとめ

  • - 書式は =IFS(条件1, 値1, 条件2, 値2, ...)
  • - 上から順に判定され、最初に当てはまったところで確定する
  • - 数値の範囲は厳しい順に並べる
  • - 最後に TRUE, "その他" の受け皿を置く
  • - 値の一致だけなら SWITCH、条件が10を超えたら表+XLOOKUP

関連する関数

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です