次の DEMO を見にいく
Excel

ExcelのIFS関数に最後の「それ以外」を設定する手順

k.w
\お買い物マラソン開催中/
スポンサーリンク

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, “通常”)

対応表の例(点数→評価):

点数評価
95S
88A
72B
61C
10D

日付帯の考え方では、境界が同じ日付に当たる可能性を意識する。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で範囲判定を行う、といった組み合わせが考えられる。ただし、式が長くなるほど読み手の負担が増える。分けられるなら列を分け、段階を明確にする方がチームでの共有がしやすい。

スポンサーリンク
記事URLをコピーしました