ExcelのIFS関数に最後の「それ以外」を設定する手順
IFS関数の基本
IFS関数は、左から順に条件を評価し、最初に真になった条件の結果を返す関数。複数のIFを入れ子にせず、1本の式で段階的な判定を書けるのが特徴。構文は「IFS(条件1, 値1, 条件2, 値2, …)」。条件と値をペアで並べ、必要なだけ増やせる。
評価の流れはシンプル。まず最初の条件を計算し、真ならその値を返して終了。偽なら次の条件へ進む。どの条件も真にならない場合、式全体はエラーになる。IFのような「else(それ以外)」引数はIFSには無いので、自分で最後のペアを工夫する必要がある。
IFとの違いは、読みやすさとメンテナンス性に現れる。IFの入れ子は右に長くなりやすく、かっこ対応の把握が難しくなる。IFSは条件と結果を縦に並べる発想で、順序の見直しや追加が比較的しやすい。一方で、すべての条件が偽だとエラーになる点はIFと異なるため、最後の扱いを忘れないことが大切。
対応バージョンは、Microsoft 365やExcel 2019以降で利用可能。関数名は英語版でも「IFS」。日本語版でも同じ表記で使える。GoogleスプレッドシートにもIFSはあるが、細かな挙動が異なる部分があるため、別製品の式はそのまま流用せず、動作を確かめるのが安全。
IFS関数はIFの入れ子より読みやすいの?
多くのケースで読みやすくなる。条件と結果がペアで並ぶため、どこで何を返すかが一覧で把握しやすい。ただし条件の設計が複雑なとき、ANDやORが増え過ぎるとIFSでも見通しが悪くなる。そんな場合は、しきい値の順番を見直す、補助列で条件を分ける、別の関数(SWITCHやLOOKUP系)で置き換えるなどの工夫が役に立つ。
IFS関数に「FALSE値」を指定する方法
IFSには「それ以外」を直接書く引数は無い。そこで一般的なやり方は、最後の条件に常に真になる式を置き、既定値(デフォルト)を返すこと。最も簡単なのは「TRUE」をそのまま最後の条件として書く形。
例:
- 点数に応じて評価を返す
- IFS(A2>=90, “S”, A2>=80, “A”, A2>=70, “B”, TRUE, “その他”)
この式では、90以上、80以上、70以上の順に判定し、どれにも当てはまらない場合だけ最後のTRUEに到達し、「その他」を返す。評価は左から順に行われるため、しきい値は大きい方から書くと矛盾しにくい。
常に真になる条件はTRUEのほか、1=1、LEN(“”)=0 などでも代用できるが、意図が伝わりやすいTRUEが無難。最後のペアを忘れると、条件に当てはまらなかった行でエラーになる。運用前に少数のテストデータで想定外ケースを意図的に作り、既定値が返るか確認しておくと安心。
順序設計のポイントは、範囲が広い条件ほど後ろに置くこと。たとえば「A2>=70」を先に書き、「A2>=90」を後ろに書くと、90以上のデータも70以上で止まってしまう。重なりのある条件は、より厳しい条件を先、緩い条件を後ろに並べるのが基本。
IFと組み合わせる方法もある。たとえば、最初の数個だけをIFSで書き、最後のペアにIFERRORやIFを使って別の計算へ渡すなど。ただし読みやすさは落ちやすいので、まずはIFS内で完結させる形を検討するのが良い。
空白セルの予期せぬ一致について
空白に見えるセルは、実際には空文字が入っていることがある。ユーザー関数や式の結果で空文字が返っているケースだ。空文字は見た目は何も無いが、長さは0の文字列。比較式では数値に自動変換されないため、数値判定の前に空白を除外したいことがある。
対策の例:
- 先頭に「空でない」を置く
- IFS(A2=””, “未入力”, A2>=90, “S”, A2>=80, “A”, TRUE, “その他”)
- 空白と空文字を同時に扱う
- IFS(LEN(A2)=0, “未入力”, A2>=90, “S”, A2>=80, “A”, TRUE, “その他”)
LEN(A2)=0は、完全な空白と空文字の両方に一致する。空欄として扱いたい値を先に振り分けておくと、下の数値判定が安定する。
文字列のセルの予期せぬ一致について
見た目が数字でも、セルが文字列形式のときは数値比較がうまく働かないことがある。例えば「80」という文字列は、A2>=80の比較で意図しない結果になることがある。数値として扱いたい場合は、値を数値に変換してから比較する。
対策の例:
- 値側を数値化して比較
- IFS(VALUE(A2)>=90, “S”, VALUE(A2)>=80, “A”, TRUE, “その他”)
- セル側で文字列の余白を除去(必要に応じて)
- IFS(VALUE(TRIM(A2))>=90, “S”, VALUE(TRIM(A2))>=80, “A”, TRUE, “その他”)
VALUEや–A2(二重マイナス)で数値化できることが多い。データ取り込み直後は、先に整形してからIFSで分類する流れが実務では安定する。
最後にTRUEを置く以外の書き方はある?
完全一致の集合を捌きたい場合はSWITCHが候補。SWITCHは一致しないときの既定値を第2引数以降に用意できる。範囲判定が多い場合はIFSが向く。既定値だけを外出しにしたいなら、IFSをIFERRORで包み、当てはまらない場合に別の値を返す方法もある。ただし、IFSが条件外でエラーになっているのか、途中の計算でエラーになっているのか見えにくくなるため、運用上の説明コストを考えて選びたい。
実務で使えるパターン集
ここでは、そのまま使える形のIFS例をまとめる。しきい値の順序は厳しいものから緩いものへ。最後にTRUEで既定値を返す形を基本とする。
- 1. 点数の評価帯
- IFS(A2>=90, “S”, A2>=80, “A”, A2>=70, “B”, A2>=60, “C”, TRUE, “D”)
- 2. 売上ランク(当月の実績)
- IFS(B2>=2000000, “プラチナ”, B2>=1000000, “ゴールド”, B2>=500000, “シルバー”, TRUE, “ブロンズ”)
- 3. 日付の帯で分類(当月・翌月・それ以外)
- IFS(EOMONTH(TODAY(),0)>=A2, “当月”, EOMONTH(TODAY(),1)>=A2, “翌月”, TRUE, “その他”)
- 4. テキスト分類(含む・始まる・その他)
- IFS(ISNUMBER(SEARCH(“重要”, C2)), “フラグ:重要”, LEFT(C2,3)=”URG”, “フラグ:至急”, TRUE, “通常”)
対応表の例(点数→評価):
| 点数 | 評価 |
|---|---|
| 95 | S |
| 88 | A |
| 72 | B |
| 61 | C |
| 10 | D |
日付帯の考え方では、境界が同じ日付に当たる可能性を意識する。EOMONTHを使うと月末日が明確になるため、当月の最終日を基準にして分類しやすい。テキスト判定では、SEARCHは部分一致で大文字小文字を区別しない。完全一致の羅列はSWITCHの方が簡潔だが、複数条件の優先度を持たせたいときはIFSが扱いやすい。
境界値にぴったりのときはどちらに入る?
「以上」「より大きい」のどちらを採用するかで所属先が変わる。評価の例では「A2>=90」のように以上を使っているため、90は上位に入る。仕様を決める段階で境界の扱いを文章で明示し、式の記法と合わせると混乱が減る。
エラーと落とし穴の対処
よくあるのは、条件の順序ミス、データ型の不一致、空白や空文字の混在、そして途中計算のエラーが最終的に露出するパターン。以下の表に症状と原因、対処のヒントをまとめる。
| 症状 | 主な原因 | 対処のヒント |
|---|---|---|
| どれにも当てはまらずエラーになる | 最後のTRUEが無い | 最後に「TRUE, 既定値」を追加して網を張る |
| 90以上がAで止まりSが出ない | 条件の順番が逆 | 厳しい条件から並べ直す(90→80→70の順) |
| 数字に見えるのに比較できない | 文字列の数字 | VALUEや–で数値にしてから比較 |
| 空白のはずなのに何かに一致する | 空文字が入っている | LEN=0の判定を先に書き分ける |
| 途中の計算エラーでIFSごとエラー | 中の式が#N/Aなどを返す | 個別の条件内でIFERRORを使い、意図した値に置き換える |
ANDやORを併用する場合、条件が複雑になるほど読みづらくなる。条件の塊は補助列へ切り出す、重複する閾値は名前定義にまとめるなど、式の見た目を整えると保守が楽になる。特に日付や時刻はシリアル値の比較で勘違いが起きやすいので、比較対象を同じ粒度(日時なら日時、日なら日)に揃えること。
IFSの中でAND/ORを使うときの基本形は?
ANDとORは、IFSの各「条件」部分にそのまま書ける。基本形は次の通り。
- IFS(AND(A2>=80, A2<90), “A帯”, AND(A2>=70, A2<80), “B帯”, TRUE, “その他”)
複合条件は括弧で囲んで読みやすさを保つ。閾値をまたぐ条件は、上限と下限の境界が重ならないように丁寧に書き分ける。
IF・IFS・SWITCHの使い分け
単純に二分岐ならIFで十分。複数段階の範囲判定や優先度付きの条件ならIFSが向く。完全一致のラベル置換のように、候補が並ぶだけで優先度を気にしないときはSWITCHが簡潔になる。VLOOKUPやXLOOKUPでテーブルを参照する方法も、データ駆動で保守しやすい選択肢だ。
判断の基準は、条件数、条件の関係(重なりがあるか)、将来の変更頻度。条件が増え続けるなら、関数で頑張るより、参照表を作ってLOOKUP系関数で引く方が運用に強い場合が多い。
SWITCHとIFSを一緒に使っても問題ない?
問題はない。例えば、最初にSWITCHで完全一致の特例を処理し、その結果に応じてIFSで範囲判定を行う、といった組み合わせが考えられる。ただし、式が長くなるほど読み手の負担が増える。分けられるなら列を分け、段階を明確にする方がチームでの共有がしやすい。