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、と覚えておくと選びやすいです。
複数条件を組み合わせる
=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
コメントを残す