【Excel】SWITCH関数でIF文のネストを解消!Excelの条件分岐をシンプルに書く方法

【Excel】SWITCH関数でIF文のネストを解消!Excelの条件分岐をシンプルに書く方法
🛡️ 超解決

Excelで複雑な条件分岐を行う際、IF関数を繰り返し使うと数式が長くなり、読みにくくなることがあります。このようなIF関数のネスト(入れ子)は、管理が難しく、間違いの原因にもなりかねません。しかし、SWITCH関数を利用すれば、これらの問題を解消できます。SWITCH関数は、特定の条件に基づいて複数の結果を切り替える際に非常に有効です。この記事では、SWITCH関数の使い方と、IF文のネストをどのようにシンプルに書き換えられるかを具体的に解説します。

SWITCH関数を使いこなすことで、Excelでの条件分岐処理を格段に分かりやすく、効率的に記述できるようになります。これにより、数式のメンテナンス性が向上し、作業効率の向上につながるでしょう。

【要点】SWITCH関数でIF文のネストを解消し、条件分岐をシンプルにする方法

  • SWITCH関数: 特定の値が複数の候補値のどれに一致するかを判定し、一致した候補値に対応する結果を返す関数です。
  • IF関数ネストの解消: 複数のIF関数を繰り返す代わりにSWITCH関数を使うことで、数式を短く、読みやすくできます。
  • SWITCH関数の構文: SWITCH(対象の値, 値1, 結果1, 値2, 結果2, …, [既定値]) の形式で記述します。

ADVERTISEMENT

SWITCH関数でIF文のネストが解消される仕組み

ExcelのIF関数は、論理テストの結果がTRUEかFALSEかで異なる値を返します。例えば、「A1セルの値が1なら「A」、2なら「B」、3なら「C」を返す」といった条件分岐を行う場合、IF関数を入れ子にして次のように記述します。

=IF(A1=1,”A”,IF(A1=2,”B”,IF(A1=3,”C”,”その他”)))

この数式は、A1セルの値が1かどうかを判定し、違えば次にA1セルの値が2かどうかを判定します。このように、IF関数を重ねていくと、数式が深くなり、どの条件がどの結果に対応しているのかを把握するのが難しくなります。特に条件が増えると、読みにくさが増し、修正も困難になります。

一方、SWITCH関数は、指定した「対象の値」が、リストアップされた「値」のどれかに一致するかを順番に判定します。一致するものが見つかれば、その値に対応する「結果」を返します。一致するものが一つも見つからなかった場合は、最後に指定された「既定値」(省略可能)を返します。この仕組みにより、IF関数のネスト構造をフラットな構造で表現できるため、数式がシンプルになり、可読性が向上します。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

SWITCH関数の基本的な使い方と構文

SWITCH関数は、Excel 2019およびMicrosoft 365で利用可能です。それ以前のバージョンでは使用できません。この関数の構文は以下の通りです。

SWITCH(対象の値, 値1, 結果1, [値2, 結果2]…

各引数の意味は以下の通りです。

  • 対象の値: 比較したい値や、参照するセルを指定します。
  • 値1: 「対象の値」と比較する最初の値です。
  • 結果1: 「対象の値」が「値1」と一致した場合に返される値です。
  • 値2, 結果2, …: 必要に応じて、さらなる比較値と結果のペアを追加できます。
  • [既定値]: 省略可能な引数です。どの「値」とも一致しなかった場合に返される値を指定します。指定しない場合、一致するものがないと#N/Aエラーが返されます。

例えば、A1セルの値が「りんご」なら「果物」、「にんじん」なら「野菜」、「牛乳」なら「飲料」と表示したい場合、SWITCH関数は以下のように記述します。

=SWITCH(A1,”りんご”,”果物”,”にんじん”,”野菜”,”牛乳”,”飲料”,”不明”)

この例では、A1セルの値が「りんご」であれば「果物」を返します。もし「りんご」でなければ、次に「にんじん」と比較し、一致すれば「野菜」を返します。それでも一致しなければ「牛乳」と比較し、一致すれば「飲料」を返します。これらのどの値とも一致しなかった場合は、最後の「不明」が表示されます。

IF文のネストをSWITCH関数で書き換える手順

ここでは、具体的なIF文のネストをSWITCH関数で書き換える手順を説明します。想定するシナリオは、テストの点数に応じて成績(優・良・可・不可)を付ける場合です。

IF文ネストによる成績判定

まず、IF関数をネストさせて成績を判定する数式を見てみましょう。点数が90点以上なら「優」、80点以上なら「良」、70点以上なら「可」、それ以外は「不可」とします。対象の点数はB1セルにあるとします。

=IF(B1>=90,”優”,IF(B1>=80,”良”,IF(B1>=70,”可”,”不可”)))

この数式は、B1セルの値が90以上か、次に80以上か、さらに70以上かと順に判定しています。条件が多くなると、数式が非常に長くなり、読みにくくなることがわかります。

SWITCH関数による書き換え手順

次に、このIF文のネストをSWITCH関数を使って書き換えます。SWITCH関数は、厳密な一致を判定するため、範囲指定(例:70点以上)を直接扱うことはできません。そのため、IF関数と組み合わせるか、別の方法を検討する必要があります。しかし、ここでは「点数」そのものに基づいて結果を切り替える、より直接的な例でSWITCH関数のメリットを示します。

例えば、B1セルの値が「1」なら「優」、「2」なら「良」、「3」なら「可」、「4」なら「不可」と表示したい場合を考えます。この場合、SWITCH関数は非常に有効です。

  1. 対象のセルを選択する
    結果を表示したいセルを選択します。ここではC1セルとします。
  2. SWITCH関数を入力する
    C1セルに以下の数式を入力します。

    =SWITCH(B1,1,”優”,2,”良”,3,”可”,4,”不可”,”不明”)

  3. 数式を確定する
    Enterキーを押して数式を確定します。

このように、B1セルの値が1であれば「優」、2であれば「良」、3であれば「可」、4であれば「不可」がC1セルに表示されます。どの値とも一致しない場合は「不明」と表示されます。

先ほどの点数による成績判定のように、範囲条件を扱う場合は、IF関数とSWITCH関数を組み合わせる、あるいはLOOKUP関数やIFS関数(Excel for Microsoft 365、Excel 2019以降)といった他の関数を検討する方が適している場合があります。しかし、単純な値の一致で条件分岐を行いたい場合には、SWITCH関数はIF文のネストを劇的にシンプルにします。

IFS関数との比較

Excel 2019およびMicrosoft 365には、IFS関数も用意されています。IFS関数は、複数の条件を順番に評価し、最初にTRUEとなった条件に対応する値を返します。これは、IF関数のネストよりも直感的に記述でき、SWITCH関数とは異なるアプローチで複雑な条件分岐を扱えます。

先ほどの点数による成績判定(90点以上「優」、80点以上「良」など)は、IFS関数を使うと以下のように記述できます。

=IFS(B1>=90,”優”,B1>=80,”良”,B1>=70,”可”,TRUE,”不可”)

IFS関数は範囲条件の判定に適しており、SWITCH関数は特定の値との一致判定に強みがあります。どちらの関数を使うかは、実現したい条件分岐の種類によって選択するのが良いでしょう。

ADVERTISEMENT

SWITCH関数を使う上での注意点と制限事項

SWITCH関数はIF文のネストを解消する強力なツールですが、いくつか注意しておきたい点と制限事項があります。

厳密な一致判定であること

SWITCH関数は、対象の値と指定した値が「完全に一致」するかどうかを判定します。そのため、「以上」「以下」「より大きい」「より小さい」といった範囲条件を直接扱うことはできません。例えば、「B1セルの値が70以上の場合」といった条件を指定したい場合は、SWITCH関数単体では実現できません。

このような範囲条件を扱いたい場合は、前述のようにIF関数と組み合わせるか、IFS関数、VLOOKUP関数、XLOOKUP関数(Microsoft 365)などを利用することを検討してください。例えば、IF関数と組み合わせる場合は、IF関数の論理テスト部分で範囲条件を評価し、その結果をSWITCH関数の対象の値として渡すといった方法が考えられます。

既定値([default]引数)の重要性

SWITCH関数の最後の引数である「既定値」は、省略可能です。しかし、省略した場合、対象の値がどの比較値とも一致しなかったときに#N/Aエラーが返されます。意図しないエラー表示を避けるため、通常は「既定値」を指定しておくことを強く推奨します。一般的には、「その他」「該当なし」「不明」といった文字列や、0などの数値を指定することが多いです。

例えば、対象のセルが空白だった場合や、想定外の値が入力された場合にエラーを表示させたくない場合は、既定値に適切な値を設定することで、数式全体の堅牢性を高めることができます。

Excelのバージョンによる利用可否

SWITCH関数は、Excel 2019およびMicrosoft 365で新しく導入された関数です。したがって、Excel 2016以前のバージョンでは利用できません。もし、これらの古いバージョンでExcelファイルを開いた場合、SWITCH関数を使用した数式は正しく計算されず、エラーが表示される可能性があります。

古いバージョンのExcelとの互換性を考慮する必要がある場合は、IF関数のネストや、VLOOKUP関数など、より広範なバージョンでサポートされている関数を使用する方が安全です。あるいは、SWITCH関数をVBAマクロで代替するなどの方法も考えられます。

IF文ネストの代替となる他の関数

SWITCH関数以外にも、ExcelでIF文のネストを回避し、条件分岐をシンプルにするための関数がいくつか存在します。それぞれの関数は異なる特徴を持っているため、状況に応じて使い分けることが重要です。

IFS関数

IFS関数は、複数の条件を順番に評価し、最初にTRUEになった条件に対応する値を返します。この関数は、Excel 2019およびMicrosoft 365で利用可能です。IF関数をネストさせるよりも、数式がフラットになり、可読性が向上します。例えば、先述の点数による成績判定は、IFS関数を使うことで非常に分かりやすく記述できます。

=IFS(B1>=90,”優”,B1>=80,”良”,B1>=70,”可”,TRUE,”不可”)

IF関数ネストの代替として、最も直接的で使いやすい関数の一つと言えます。

VLOOKUP関数・HLOOKUP関数

VLOOKUP関数やHLOOKUP関数は、指定した範囲(テーブル)の中から、検索値に一致する行または列を探し、対応する値を取り出す関数です。これらは、多数の条件分岐をテーブル形式で管理したい場合に非常に有効です。

例えば、成績判定を例にとると、以下のような成績基準テーブルを作成し、VLOOKUP関数で参照することができます。

点数 成績
0 不可
70
80
90

このテーブルがD1:E4の範囲にある場合、B1セルの点数に対応する成績は以下のVLOOKUP関数で取得できます。

=VLOOKUP(B1,D1:E4,2,TRUE)

ここでは、近似一致(第4引数にTRUEまたは省略)を利用して、点数の範囲に対応する成績を取得しています。このように、VLOOKUP関数やHLOOKUP関数は、条件分岐のロジックをデータテーブルとして管理できるため、条件が増減した場合のメンテナンスが容易になります。

XLOOKUP関数

XLOOKUP関数は、Microsoft 365で利用可能な、VLOOKUP関数やHLOOKUP関数の後継とも言える関数です。より柔軟で強力な検索・参照機能を提供します。

XLOOKUP関数を使えば、上記のような成績判定をよりシンプルに記述できます。成績基準テーブルがD1:E4にある場合、数式は以下のようになります。

=XLOOKUP(B1,D1:D4,E1:E4,”該当なし”,-1)

第4引数の「-1」は、検索モードで「完全一致または次の小さい項目」を指定しており、VLOOKUP関数の近似一致と同様の動作をします。XLOOKUP関数は、検索列と戻り列を別々に指定できるため、テーブルの構造に柔軟性を持たせることができます。

まとめ

SWITCH関数は、Excelにおける特定の値の一致判定に基づく条件分岐を、IF関数ネストよりもはるかにシンプルかつ分かりやすく記述できる関数です。特に、複数の固定値に対してそれぞれ異なる結果を返したい場合に、その効果を発揮します。

IF文のネストによる数式の読みにくさや管理の煩雑さに悩んでいる場合は、SWITCH関数の導入を検討してみてください。これにより、条件分岐処理の効率とメンテナンス性が向上します。

ただし、SWITCH関数は範囲条件の判定には適さないため、そのような場合はIFS関数やVLOOKUP関数、XLOOKUP関数などの利用を検討しましょう。これらの関数を使い分けることで、Excelでのデータ処理がより洗練されたものになります。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】