IFS関数の使い方|複数条件をすっきり記述する方法
IFS関数は、複数の条件を順番に評価して、最初にTRUEとなった条件の値を返す関数です。IF関数のネスト(入れ子)を使わずに、複数条件の分岐をすっきりと記述できます。Excel 2019およびMicrosoft 365以降で利用可能です。
この記事では、IFS関数の基本から、IF関数のネストとの比較、実務での活用法を解説します。
IFS関数の基本構文
=IFS(論理式1, 値1, [論理式2, 値2], ...)
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| 論理式1 | 最初に判定する条件 | 必須 |
| 値1 | 論理式1がTRUEの場合に返す値 | 必須 |
| 論理式2 | 2番目に判定する条件 | 任意 |
| 値2 | 論理式2がTRUEの場合に返す値 | 任意 |
| … | 最大127組の論理式と値のペアを指定可能 | 任意 |
IFS関数は上から順に条件を評価し、最初にTRUEになった条件の値を返します。すべての条件がFALSEの場合は#N/Aエラーが返されます。
IF関数のネストとの比較
同じ処理をIF関数のネストとIFS関数で記述した場合を比較します。
成績を5段階(S、A、B、C、D)で評価する例です。
IF関数のネストで書いた場合はこうなります。
=IF(B2>=90, "S", IF(B2>=80, "A", IF(B2>=70, "B", IF(B2>=60, "C", "D"))))
IFS関数で書いた場合は次の通りです。
=IFS(B2>=90, "S", B2>=80, "A", B2>=70, "B", B2>=60, "C", TRUE, "D")
IFS関数のほうが括弧のネストがなく、条件と結果の対応が見やすくなっています。
「その他」の条件を指定する方法
IFS関数にはIF関数の「値が偽の場合」に相当する引数がありません。すべての条件に該当しない場合の処理は、最後の条件にTRUEを指定します。
=IFS(条件1, 値1, 条件2, 値2, TRUE, "その他")
TRUEは常にTRUEと評価されるため、前の条件にすべて該当しなかった場合の受け皿として機能します。この指定を忘れると、どの条件にも該当しないデータで#N/Aエラーが発生します。
実践例1:成績のランク分け
テストの点数から成績ランクを判定します。
=IFS(B2>=90, "S", B2>=80, "A", B2>=70, "B", B2>=60, "C", TRUE, "D")
条件は上から順に評価されるため、95点の場合は最初の条件(>=90)でTRUEとなり、「S」が返されます。75点の場合は3番目の条件(>=70)でTRUEとなり、「B」が返されます。
実践例2:売上目標の達成状況
売上実績と目標の比率に応じた評価を行います。
=IFS(C2/B2>=1.2, "大幅達成", C2/B2>=1, "達成", C2/B2>=0.8, "惜しい", TRUE, "未達成")
B2に目標、C2に実績が入力されている場合、達成率120%以上は「大幅達成」、100%以上は「達成」、80%以上は「惜しい」、それ未満は「未達成」と表示されます。
実践例3:曜日に応じた営業時間の表示
WEEKDAY関数と組み合わせて、曜日ごとの営業時間を表示します。
=IFS(WEEKDAY(A2)=1, "定休日", WEEKDAY(A2)=7, "10:00-18:00", TRUE, "9:00-20:00")
日曜日(1)は「定休日」、土曜日(7)は短縮営業、それ以外は通常営業時間を表示します。
実践例4:データの分類
数値データをカテゴリに分類する例です。年齢から世代を分類します。
=IFS(B2<20, "10代以下", B2<30, "20代", B2<40, "30代", B2<50, "40代", B2<60, "50代", TRUE, "60代以上")
条件を上から順に評価するため、範囲の下限だけを指定すれば自動的に正しいカテゴリに分類されます。
実践例5:エラー処理との組み合わせ
IFS関数にIFERROR関数を組み合わせて、入力値の検証を行います。
=IFERROR(IFS(B2>=90, "S", B2>=80, "A", B2>=70, "B", B2>=60, "C", TRUE, "D"), "入力エラー")
B2に数値以外のデータや、計算不可能な値が入っている場合に「入力エラー」と表示します。
よくあるエラーと対処法
#N/Aエラー
すべての条件がFALSEの場合に発生します。最後の条件ペアにTRUEを指定して、どの条件にも該当しないケースの処理を追加してください。
# エラーになる可能性がある
=IFS(B2>=70, "合格", B2>=50, "再試験")
# TRUEで受け皿を設ける
=IFS(B2>=70, "合格", B2>=50, "再試験", TRUE, "不合格")
#NAME?エラー
IFS関数がサポートされていないバージョン(Excel 2016以前)で使用した場合に発生します。IF関数のネストで代替するか、Excelのバージョンを更新してください。
条件の順序に注意
IFS関数は上から順に条件を評価し、最初にTRUEになった条件で結果が確定します。条件の順序が重要で、広い条件を先に書くと狭い条件が評価されません。
# 間違い:B2>=60が先に評価されるため、90点以上でも「C」になる
=IFS(B2>=60, "C", B2>=70, "B", B2>=80, "A", B2>=90, "S")
# 正しい:厳しい条件から順に記述する
=IFS(B2>=90, "S", B2>=80, "A", B2>=70, "B", B2>=60, "C", TRUE, "D")
IFS関数が使えない場合の代替方法
Excel 2016以前のバージョンでは、IF関数のネストで代替できます。また、CHOOSE関数やVLOOKUP関数を使って条件分岐を実現する方法もあります。
VLOOKUPで近似一致を利用した代替例は次の通りです。
=VLOOKUP(B2, {0,"D";60,"C";70,"B";80,"A";90,"S"}, 2, TRUE)
Google スプレッドシートでの互換性
IFS関数はGoogle スプレッドシートでも同じ構文で利用できます。動作もExcelと同一です。
まとめ
IFS関数は複数条件の分岐をシンプルに記述できる関数です。
- IF関数のネストよりも可読性が高い
- 条件と値のペアを最大127組指定できる
- 最後にTRUEを指定して「その他」のケースを処理する
- 条件は厳しいものから順に記述する
3つ以上の条件分岐が必要な場面では、IFS関数を積極的に活用しましょう。