🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

ExcelのIFS関数とSWITCH関数 — ネストIFのピラミッドなしで多分岐ロジックを

|

ExcelのIFS関数とSWITCH関数 — ネストIFのピラミッドなしで多分岐ロジックを

要点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 は括弧のピラミッドに変わり始めます。 IFSSWITCH がその治療薬です——けれど、それぞれに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 は行ごとに異なるブールテストを評価し(範囲や 混在条件に最適)、SWITCH1つの式をいくつもの定数と比較します(コード→ラベルの 対応付けに最適)。間違った方を使うと、関数と格闘するはめになります。

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ケースの SWITCHExcelMaster は意図を 読み取り——この点数を 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関数