ラベルラベル

条件分岐・論理入門

SWITCH関数を見て理解する

1つの値を候補と順番に照合し、最初に一致した候補に対応する値を返す関数です。

3つのポイント

  1. 照合する1つの値を指定する
  2. 最初に一致した候補の返却値を選ぶ
  3. 一致がなければ既定値を返す
例題Excel仕様

注文ステータスの番号を処理状況へ変換する

サンプル数式

  • 照合する値
  • 候補1の値
  • 候補1の返却値
  • 候補2の値
  • 候補2の返却値
  • 候補3の値
  • 候補3の返却値
  • 一致しないときの値

いまの結果:

梱包中
計算結果
結果セル:C2
入力・条件:8項目
  • 照合する値B2:2
  • 候補1の値指定値:1
  • 候補1の返却値指定値:「受付」
  • 候補2の値指定値:2
  • 候補2の返却値指定値:「梱包中」
  • 候補3の値指定値:3
  • 候補3の返却値指定値:「発送済み」
  • 一致しないときの値指定値:「不明」
この結果になる理由

2番目の候補に最初に一致したため、対応する返却値を採用します。

サンプルデータ

ステータスを変えてみよう

※ Excel と Google スプレッドシートで結果や挙動が異なる場合、Excel の仕様を基準にしています。

「注文ステータスの番号を処理状況へ変換する」のサンプルデータ。引数番号は正式引数と教材要素の対応、小さな角丸数字は処理順を表します。
ABC
1注文番号ステータスコード処理状況
2注文001梱包中
照合する値結果セル
① 正式引数 / 教材要素1–5 処理の流れ

B2に値を入力すると、結果と処理順が変わります。

値の照合と採用経路

B2 = 2照合元
  1. 1不一致
    「受付」未評価
  2. 2一致
    「梱包中」採用
  3. 3未評価
    「発送済み」未評価
  4. それ以外未評価
    「不明」未評価

「梱包中」結果 C2

2番目の候補に最初に一致したため、対応する返却値を採用します。

残り1候補:今回の照合では未使用

8つの引数

色付きの丸数字は、サンプル数式と引数ガイドで同じ引数を示しています。表にも同じ番号があれば、その引数で指定しているセルを示します。

  1. B2表のセル: B2

    B2のステータスコードを各候補と照合します。

  2. 1指定値

    最初に照合する番号1です。

  3. "受付"指定値

    1に一致したときの「受付」です。

  4. 2指定値

    次に照合する番号2です。

  5. "梱包中"指定値

    2に一致したときの「梱包中」です。

  6. 3指定値

    続いて照合する番号3です。

  7. "発送済み"指定値

    3に一致したときの「発送済み」です。

  8. "不明"指定値

    どの番号にも一致しないときの「不明」です。

この数式を日本語にすると

B2の2を候補1・2・3と照合します。候補1とは不一致、候補2と一致するため、対応する「梱包中」をC2へ返します。

この説明は、最初に表示されているサンプルデータをもとにしています。入力値を変更しても説明文は変わりません。

処理の流れ

手順1〜5を順番に確認しましょう。表内の小さな角丸数字は、対応する手順を示します。

  1. 照合する値を読む

    B2

    B2の2を読み取ります。

  2. 候補を順に照合する

    候補1の1は不一致、候補2の2は一致。

  3. 採用する候補を決める

    2番目の候補が最初の一致です。

  4. 返す値を選ぶ

    対応する返却値の「梱包中」を採用します。

  5. 結果を表示する

    C2

    C2に「梱包中」を表示します。 2番目の候補に最初に一致したため、対応する返却値を採用します。

対応アプリ

  • Excel
  • Google スプレッドシート

関数自体が対応するアプリです。教材例の数式や再計算が、両アプリで同じように動くことを保証するものではありません。

この例の注意点

  • 複数の候補が一致する場合は、最初に一致した候補に対応する値を返します。ワイルドカードによる照合ではありません。
  • 既定値は末尾へ指定します。既定値を省略して一致もない場合は、実エラー#N/Aを返します。
  • 数値1、文字列の1、論理値TRUEは別の型として照合します。大文字と小文字は区別しませんが、全角・半角などの扱いにはExcelとSheetsで差があります。
  • この例題の計算はExcel 2021基準です。Sheetsでは候補の実エラーを不採用として照合を続けるなど、互換性欄に記載した差があります。
  • セル入力の先頭にアポストロフィを付けると文字列として保持できます。未引用の#N/Aは実エラー、先頭にアポストロフィを付けた同じ綴りは通常の文字列です。
  • この教材は単一値の照合を対象とします。配列・スピル、非常に近い数値、未確認の文字照合、空白セルを返却値に選ぶ条件は対象外です。入力欄で任意の数式は実行しません。

一般構文

対応:Excel / Google スプレッドシート ・ 構文:構文差あり

  • Excel 2021は候補と返却値を126組まで指定できます。Sheetsは少なくとも256組の成立が実測されていますが、最大上限は未確定です。
  • 全角・半角、仮名、ßとssなどの照合結果や、空白セルと空文字列・論理値の照合には環境差があります。
  • 採用した空引数位置はExcel 2021では数値0、Sheetsでは空白扱いになる実測があります。明示した空文字列とは異なります。
  • 一致より前の候補が実エラーの場合、Excel 2021はそのエラーを返し、Sheetsはその候補を不採用として後続の一致や既定値を選ぶ実測があります。
  • 配列の形状不整合や配列内エラーの扱いに差があり、スピル衝突もExcelの#SPILL!とSheetsの#REF!で異なります。今回の教材では配列・スピルを実装していません。

Excel

=SWITCH(expression, value1, result1, [value2, result2], ..., [default])

[] は省略できる引数です。

省略時

default
一致する候補がなく、既定値も省略した場合は#N/Aエラーを返します。

Google スプレッドシート

=SWITCH(expression, case1, value1, [case2, value2], ..., [default])

[] は省略できる引数です。

省略時

default
一致する候補がなく、既定値も省略した場合は#N/Aエラーになります。
公式資料・確認範囲

公式資料

実機確認

  • Excel 2021 / Google スプレッドシート計算結果・入力の扱い・エラー・配列展開を確認済み

この教材で扱わない範囲

  • 配列評価・動的配列・スピル衝突は今回未実装。
  • 未確認の文字照合、近接数値の精度差、照合元の空引数位置、未確認の空候補、空白セルの返却は対象外。
  • 任意の数式を入力して実行する汎用数式パーサーは提供しません。

次に学ぶ関数

カテゴリから探す

次に学ぶおすすめ関数はありません。カテゴリから探しましょう。

カテゴリを見る