Article

【Excel】SWITCH関数でネストしたIFを整理する方法

この記事で分かること

ExcelのネストしたIF関数をSWITCH関数に書き換える方法を解説します。書き換え前後の比較、IFS・VLOOKUPとの使い分け、注意点をスクリーンショット付きで紹介します。

IF関数を3段・4段とネストすると、括弧の対応が崩れやすく、後から読み返しても何をしているのか分かりにくくなります。SWITCH関数を使えば「この値のときはこの結果」というペアを並べるだけで同じ分岐を実現でき、数式の長さも約30%短くなります。

この記事では、ネストしたIF関数をSWITCH関数に書き換える手順を、実例とスクリーンショットで解説します。SWITCH関数は Microsoft 365 または Excel 2019 以降 で利用できます。

記事の手順を試せるサンプルファイルを用意しました。部門コード変換のデータと完成済みの数式が入っています。

ネストしたIFをSWITCHに書き換える

部門コード(1〜5)を部門名に変換する数式を例にします。IF関数でこの変換を書くと、5段のネストが必要です。

Before: 5段ネストのIF関数

=IF(B2=1,"営業部",IF(B2=2,"経理部",IF(B2=3,"人事部",IF(B2=4,"開発部",IF(B2=5,"総務部","その他")))))
5段ネストしたIF関数がセルD2の数式バーに表示されている画面
セルD2の数式バー:5段ネストしたIF関数は括弧だらけで読みにくい

閉じ括弧が5つ並び、どの条件がどの結果に対応しているのか一目では分かりません。

After: SWITCH関数

=SWITCH(B2,1,"営業部",2,"経理部",3,"人事部",4,"開発部",5,"総務部","その他")
SWITCH関数に書き換えたセルC2の数式バーが短く表示されている画面
セルC2の数式バー:SWITCH関数なら値と結果のペアが並ぶだけで読みやすい

SWITCH関数では、比較する値(1, 2, 3…)と返す結果(”営業部”, “経理部”…)のペアを順番に並べるだけです。括弧のネストは1段で済み、数式の文字数も約30%削減できます。

※ Microsoft 365 環境では、数式バーに =@SWITCH(...) のように先頭に @ が表示されることがあります。これは Excel が自動で付ける暗黙的共通部分演算子で、動作に違いはありません。数式の入力時に @ を付ける必要はなく、=SWITCH(...) とそのまま入力してください。

SWITCH関数の引数と書き方

SWITCH関数の構文は次のとおりです。

=SWITCH(式, 値1, 結果1, [値2, 結果2], ..., [既定値])
引数必須/省略可説明
必須比較の対象となるセル参照や数式
値1必須式と比較する値。完全一致で判定される
結果1必須値1に一致したときに返す値や計算式
値2, 結果2, …省略可追加の値と結果のペア。最大126ペアまで指定可能
既定値省略可どの値にも一致しないときに返す値。省略すると #N/A エラー

SWITCH関数は Microsoft 365 または Excel 2019 以降で利用できます。Excel 2016 以前では #NAME? エラーになります。

実践例 ― 部門コードを部門名に変換する

社員一覧の部門コード(1〜5の数値)を部門名に変換する手順を見ていきます。

手順1: 部門名を表示したいセル(C2)を選択し、=SWITCH( と入力します。

手順2: 第1引数に比較対象のセルを指定します。ここでは部門コードが入っている B2 です。

手順3: 値と結果のペアをカンマで区切って入力します。

=SWITCH(B2,1,"営業部",2,"経理部",3,"人事部",4,"開発部",5,"総務部","その他")

末尾の "その他" は既定値です。部門コードが1〜5のどれにも一致しない場合に返されます。

手順4: Enter で確定したら、セルC2をコピーしてC13まで貼り付けます(オートフィル)。

部門コードがSWITCH関数で部門名に変換された社員一覧のワークシート
SWITCH関数で部門コードを部門名に変換した結果。D列の5段ネストIFと同じ結果が得られる

C列(SWITCH)とD列(ネストIF)を見比べると、まったく同じ結果が得られていることが分かります。数式の長さはSWITCH関数の方が約30%短くなります。

応用パターン

WEEKDAY関数と組み合わせて曜日名を返す

WEEKDAY関数の戻り値(1〜7)をSWITCH関数で曜日の文字に変換できます。

=SWITCH(WEEKDAY(A2),1,"日",2,"月",3,"火",4,"水",5,"木",6,"金",7,"土")
日付からWEEKDAY関数とSWITCH関数で曜日を求めた応用例のワークシート
WEEKDAY関数の戻り値をSWITCH関数で曜日名に変換した例

TEXT関数の "aaa" でも曜日は表示できますが、SWITCH関数なら「月曜日」「月曜」のような自由な文字列を返せるのが利点です。

結果に計算式を返す

SWITCH関数の結果部分には、固定値だけでなく計算式も書けます。

=SWITCH(A2,"税込",B2*1.1,"税抜",B2,"不明")

この例では、区分が「税込」なら税抜価格に1.1を掛けた値、「税抜」ならそのままの値を返します。

式にも関数を使える

SWITCH関数の第1引数(式)にもLEFT関数やMONTH関数などの関数を使えます。

=SWITCH(LEFT(A2,1),"東","関東","大","関西","名","中部","不明")

この例では、セルA2の先頭1文字を取り出してSWITCH関数で地域名に変換しています。

IFS関数・VLOOKUP・CHOOSEとの使い分け

SWITCH関数と似た機能を持つ関数がいくつかあります。場面に応じた使い分けを整理します。

観点SWITCHIFSVLOOKUPCHOOSE
比較方法値の完全一致条件式(TRUE/FALSE)テーブル検索連番インデックス
範囲判定(80点以上で”B”など)不向き得意近似一致で可能不可
非連番の値(10, 20, 30…)得意得意得意不可
別テーブルが必要か不要不要必要不要
対応バージョン2019以降2019以降全バージョン全バージョン

使い分けの目安:

  • 値の完全一致で分岐したい → SWITCH関数
  • 「以上」「以下」などの範囲判定で分岐したい → IFS関数
  • 対応表がセル上にすでにある → VLOOKUP関数
  • 連番(1, 2, 3…)の順番に結果を返したい → CHOOSE関数

なお、=SWITCH(TRUE, A2>=90, "A", A2>=70, "B", ...) のように第1引数にTRUEを渡すとIFS関数と同じ動作になりますが、IFS関数を使った方が意図が明確です。範囲判定にはIFS関数を使いましょう。

SWITCH関数の注意点とエラー対策

既定値を省略すると #N/A エラー

どの値にも一致せず、既定値も設定していない場合、SWITCH関数は #N/A エラーを返します。想定外の値が入る可能性がある場合は、必ず末尾に既定値を指定しましょう。

大文字と小文字を区別しない

SWITCH関数では、テキストの大文字と小文字は同じ値として扱われます。たとえば "abc""ABC" は一致します。大文字小文字を区別して分岐したい場合は、EXACT関数とIFS関数を組み合わせてください。

数値と文字列は区別する

大文字小文字は区別しませんが、データ型は区別します。数値の 1 と文字列の "1" は別の値として扱われます。セルに緑の三角マーク(数値が文字列として保存されている)が表示されていると、SWITCH関数の数値比較が一致しないことがあります。

空のセルは 0 として扱われる

空のセルをSWITCH関数で比較すると、空文字列 "" ではなく数値 0 として扱われます。空セルを空文字列で照合しようとしても一致しません。空セルの判定が必要な場合は、0 を値に指定するか、別途IF関数で空白チェックを行ってください。

複数の値に同じ結果を返したいとき

「コード1, 2, 3のどれかならグループA」のような指定をしたい場合、SWITCH関数ではOR条件をまとめて書くことができません。値ごとに同じ結果を繰り返す必要があります。

=SWITCH(A2,1,"グループA",2,"グループA",3,"グループA",4,"グループB","その他")

対応する値の数が多い場合は、対応表をセルに作ってVLOOKUP関数で検索する方が管理しやすくなります。

まとめ

  • SWITCH関数は「この値のとき → この結果」のペアを並べるだけで、ネストしたIF関数を大幅に短くできる
  • 既定値の指定を忘れずに(省略すると #N/A
  • 大文字小文字は区別しないが、数値と文字列は区別する
  • 範囲判定(「80点以上」など)にはIFS関数、対応表があるならVLOOKUP関数が適任
  • Microsoft 365 または Excel 2019 以降で利用可能

コピペ用の数式を再掲します。

=SWITCH(B2,1,"営業部",2,"経理部",3,"人事部",4,"開発部",5,"総務部","その他")

数式が長くなりすぎた場合は、LET関数で長い数式を分解して読みやすくする方法もあわせてご覧ください。

Next Read

このあと読む記事

今の内容に近い記事から、次の1本と補助記事を続けて見つけられるようにしています。

Keep Exploring

このテーマをさらに探す

同じテーマの入口記事と更新記事を、一覧の形でまとめています。

コメント