要点 —
IFSはネストしたIFの積み重ねを置き換えます。条件を上から下へ 確認し、最初に真になったものを返します——=IFS(test1, val1, test2, val2, …)。ほぼすべての IFS バグは2つの罠から 生まれます。(1) 既定値(else)がない——どの条件にも一致しなければ IFS は#N/Aを返すので、必ず最後をTRUE, defaultで締めて取りこぼしを拾う。 (2) 先勝ち——条件は狭い・高い方から並べないと、上に置いた広いテストが 下のすべてを飲み込みます。SWITCHはその兄弟で、1つの値を固定のケース 一覧と照合します(範囲ではなく完全一致)。どちらも Excel 2019 か 365 が必要です。
=IFS(B2>=90, "A", B2>=80, "B", B2>=70, "C", TRUE, "F")
=SWITCH(C2, "N", "North", "S", "South", "E", "East", "Unknown")
判断の結果が2つを超えた瞬間、ネストした IF は括弧のピラミッドに変わり始めます。
IFS と SWITCH がその治療薬です——けれど、それぞれに1つ鋭い刃があり、知らないと
静かに間違った答えを出します。本記事は、それぞれの考え方の軸を先に示し、そのうえで
両者を正しく保つ2つのルールを解説します。
この記事で学べること
- 考え方の軸:
IFSはチェックリスト、SWITCHは振り分けボード - IFSの罠①:
elseがない——既定値を忘れると#N/A - IFSの罠②:先勝ちなので、条件の順序がそのままロジック
- いつ
SWITCHに手を伸ばすか——そしてなぜ範囲は扱えないのか - 判断:IFS か SWITCH か、それとも
XLOOKUPのルックアップ表か
考え方の軸:チェックリストと振り分けボード
この2つの関数は、同じ「結果が2つを超える」問題の異なる形を解きます。名前を付けて おくと、一方を他方の用途に誤用せずに済みます。
IFS は上から下へ読むチェックリスト。 各ペアは「もしこの条件なら、この値」。
Excel はリストを下りていき、最初に真になったテストで止まります。
' 下へ進む:最初に真になったテストが勝つ
=IFS(B2>=90, "A", B2>=80, "B", B2>=70, "C", TRUE, "F")
SWITCH は1つの値のための振り分けボード。 1つの式を渡し、続けてケースの一覧を
渡すと、その値に等しいケースへ振り分けます。
' C2 を完全一致の値と照合
=SWITCH(C2, "N", "North", "S", "South", "Unknown")
この区別がすべての肝です。IFS は行ごとに異なるブールテストを評価し(範囲や
混在条件に最適)、SWITCH は1つの式をいくつもの定数と比較します(コード→ラベルの
対応付けに最適)。間違った方を使うと、関数と格闘するはめになります。
IFSの罠①:else がない——その代償は #N/A
これが IFS バグの第1位です。常に偽の分岐を持つ IF と違い、IFS には既定値
(else)がありません。ある行がどの条件にも一致しないと、IFS は空白でもゼロでもなく
——エラーの #N/A を返します。
=IFS(B2>=90, "A", B2>=80, "B", B2>=70, "C") ' 点数55 -> #N/A
=IFS(B2>=90, "A", B2>=80, "B", B2>=70, "C", TRUE, "F") ' 点数55 -> "F"
対策は決まり文句です。すべての IFS を TRUE, default で締める。 TRUE は常に
真なので、上のどれも一致しなかったときに走る総取りの受け皿——まさに他の言語の else
の役目です。IFS から #N/A が出たら、TRUE の行を忘れています。体で覚えること:
最後のペアは常にフォールバックです。
IFSの罠②:先勝ちなので、順序がロジック
IFS は最初に真になったテストの値を返し、その先は見ません。つまり条件の順序が
そのまま実際のロジックになり——逆にすると静かに失敗します。
' 間違った順序 — 広いテストが先頭なので、全員を捕まえてしまう
=IFS(B2>=70, "C", B2>=80, "B", B2>=90, "A", TRUE, "F")
' 点数95 は >=70 なので "C" を返して止まる。高得点がすべて "C" になる。
' 正しい順序 — 狭い・高い帯を先に
=IFS(B2>=90, "A", B2>=80, "B", B2>=70, "C", TRUE, "F")
ここにエラーは出ません——誰かが確かめるまでは、もっともらしく見える間違った成績が 出るだけです。順序のある帯(点数、ティア、年齢区分、割引のしきい値)すべてに共通する ルールは同じ:最も制限の厳しいものから、最も緩いものへ並べる。 条件が重なるとき、 最初の1つが勝つので、最も狭いテストが先頭に来ないと出番が回ってきません。
SWITCH:完全一致、すっきりした既定値、そして1つだけできないこと
SWITCH が輝くのは、1つの値をラベルへ対応付けるときで、ネストしたIF版なら同じセルを
何度も繰り返すような場面です。
' ネストしたIF — 分岐ごとに C2 を繰り返す
=IF(C2="N","North", IF(C2="S","South", IF(C2="E","East","Unknown")))
' SWITCH — C2 は一度だけ
=SWITCH(C2, "N","North", "S","South", "E","East", "Unknown")
既定値に注目してください。SWITCH で式のあとの引数が奇数個なら、最後の1つが
フォールバック(ここでは "Unknown")になります——TRUE のトリックは要りません。
覚えておくべき固い制約:SWITCH は完全一致しかできない。 >、<、範囲は
テストできません。成績の帯を SWITCH で振り分けようとすると格闘になります——それは
IFS の領分です。(SWITCH(TRUE, …) で IFS を模すトリックもありますが、範囲が必要
なら素直に IFS を使って読みやすく保ちましょう。)
判断:IFS か SWITCH か、それともルックアップ表か
3つの形、3つの道具:
- 範囲や混在条件(点数 ≥ 90、かつ地域 = West、またはフラグが立っている)
→
IFS。各テストがそれ自体のブール値、狭い順に並べ、TRUEで締める。 - 1つの値 → 1つのラベル、短く固定(N/S/E/W、ステータスコード)→
SWITCH。 完全一致、値は一度だけ書き、末尾に既定値。 - 長い・増える・業務側が持つ対応付け(製品 → 価格、従業員 → 担当者)
→ 数式の中にハードコードしない。 2列の表に入れて
XLOOKUPを使う。30ケースのSWITCHは保守の罠、 ルックアップ表なら数式に触れずに誰でも編集できるデータです。
間違いは IFS か SWITCH かの選択ではありません——ルックアップ表ぶんのケースを どちらかに詰め込むことです。対応付けが大きく、変わりやすいほど、それは構文ではなく セルに属します。
ExcelMaster の使いどころ
多分岐ロジックは、手書きの数式がもろくなる場所です——TRUE の既定値を忘れる、帯の
順序が逆、本来ルックアップにすべき20ケースの SWITCH。ExcelMaster は意図を
読み取り——この点数を A から F で採点する、各コードを地域に対応付ける——正しい
構造を作ります:総取りを備えた順序どおりの IFS、整然とした SWITCH、あるいは
対応付けが数式を超えていればルックアップ表。あなたはルールを述べるだけ。静かな
#N/A と順序の罠を、こちらが避けます。
よくある質問
IFSが #N/A を返すのはなぜ?
どの条件にも一致せず、総取りの受け皿がないからです。IFS には既定値(else)がない
ので、一致しなかった行は #N/A を返します。数式を TRUE, default_value で締めて
ください——たとえば …, TRUE, "Other")——こぼれ落ちるものをすべて処理できます。
IFSとSWITCHの違いは?
IFS はケースごとに別々のブールテストを評価するので、範囲や混在条件を扱えます。
SWITCH は1つの式を完全一致の値の一覧と比較するので、値→ラベルの対応付け向きです。
>=/範囲には IFS、完全一致には SWITCH。
IFSで条件の順序は重要?
重要です——IFS は最初に真になったテストを返して止まります。点数の帯のように重なり
合う条件では、狭い・高い方を先に並べます。さもないと先頭の広いテストが、後ろの分岐に
向けた行まで捕まえてしまいます。
SWITCHで既定値を追加するには?
対応するケースを持たない最後の引数として置きます。式のあとの引数の個数が奇数なら、
最後の1つが既定値です:=SWITCH(C2, "N","North", "S","South", "Unknown")。
IFSとSWITCHはExcel 2016で使える?
使えません。どちらも Excel 2019 で追加され、Microsoft 365 に入っています。Excel 2016
以前では、ネストした IF かルックアップ表に切り替えます。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-06-25。
関連ガイド: ExcelのIF関数 · ExcelのIFERROR関数 · ExcelのXLOOKUP関数 · ExcelのSUMIFS関数
