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関数のネスト構造をフラットな構造で表現できるため、数式がシンプルになり、可読性が向上します。
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関数は非常に有効です。
- 対象のセルを選択する
結果を表示したいセルを選択します。ここではC1セルとします。 - SWITCH関数を入力する
C1セルに以下の数式を入力します。=SWITCH(B1,1,”優”,2,”良”,3,”可”,4,”不可”,”不明”)
- 数式を確定する
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でのデータ処理がより洗練されたものになります。
ADVERTISEMENT
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Outlook】メールの受信が数分遅れる!リアルタイムで届かない時の同期設定と送受信グループ設定
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Outlook】「メール送信を5分遅らせる」設定!誤送信を防ぐ最強のディレイ機能
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
