Office 365 サブスクリプションの Excel (の最新版) で利用できる SWITCH関数について紹介します。
SWITCH 関数はいろんな使い方ができるので、目的次第のところはあるのですが、簡単に (乱暴に?) いうと、CHOOSE 関数だとインデックス (1 ~ 254 までの数値) しか指定できないところが文字列でも可能だったり、該当がない場合に「その他だったらどうするか」といった指定ができるところが魅力でしょうか。
CHOOSE 関数のことも簡単に書いたうえで、SWITCH 関数の話をご紹介します。
CHOOSE 関数の概要
セル A2 が「1」だったらセル B2 が「A」、「2」だったら「B」、「3」だったら「C」、「4」だったら「D」 を返す、という CHOOSE 関数による数式が、セル B2 に作成されています。
セルA2 の値に対応する値がセル B2 に返る、ということです。
CHOOSE 関数の書式 (構文) は下記です。
CHOOSE(インデックス, 値1 ,[値2], ...)
インデックスには、1 から 254 の数値 (またはその値を返す数式や、その値が格納されているセルでも OK) を必ず指定します。
値1 には、インデックスが 1 だったときに返す値や処理 (数式やセル参照など) を指定します。
値2 には、インデックスが 2 だったときに返す値や処理 (数式やセル参照など) を指定します。
・・・・ というのを、値254 まで指定できるということです。(254 まで使うのは現実的ではないけれど、やろうと思えばできる。)
たとえば、「=CHOOSE(1,“A”,”B”,”C”,”D”)」という数式の場合、赤い数字の部分がインデックスで、「1 なら A」「2 なら B」「3 なら C」「4 なら D」が返る、ということですね。
下のサンプルでは、インデックスをセル A2 とし、値1 から 値4 までを使っていますが、「“A”」のように値をしているパターンと、「F2」のようにセル参照をしているパターンのいずれも、セル A2 の値が変わると、セル B2 に表示される内容が変わります。
(一応書いておくと、E 列のデータはなくてもよいです。対応がわかりやすいように書いているだけです。数式でも使いません。)
なお、値xに指定している値以外が、インデックスが指定された場合は、エラーが表示されます。
SWITCH 関数の概要
セル A2 が「1」だったらセル B2 が「A」、「2」だったら「B」、「3」だったら「C」、「4」だったら「D」 を返す、という SWITCH 関数による数式が、セル B2 に作成されています。
SWITCH 関数の書式 (構文) は下記です。
SWITCH(確認する値, 値1, 結果1, [値2] , [結果2], ... ,該当する値がない場合に返す値)
確認する値には、数値または文字列 (またはその値を返す数式や、その値が格納されているセルでも OK) を必ず指定します。
ここが、“インデックス”(1 から 254 の数値) に縛られていないのが、CHOOSE 関数との大きな違いです。
値1 には、確認する値と一致するかどうかをチェックしたい 1 つ目の値を指定します。
結果 1 には確認する値と値1 が一致したときに返したい値を指定します。
・・・・ という値と結果のセットを 126 個まで指定できます。
該当する値がない場合に返す値 には、確認する値のセルが空白だったり、対象外の値だったりしたときにどうするかを指定します。
この引数は省略可能です。
たとえば、「=SWITCH(A2,1,“A”,2,”B”,3,”C”,4,”D”,”該当なし“)」という数式の場合、セルA2 の値が「1 なら A」「2 なら B」「3 なら C」「4 なら D」が返り、1 でも 2 でも 3 でも 4 でもなければ該当なしという文字列が返ります。
結果の部分だけをセル参照にしているのが下図です。「値が1だったらセル F2 を結果として返す」「値が2だったら F3を」というように指定されています。
もう一度構文をここに。
SWITCH(確認する値, 値1, 結果1, [値2] , [結果2], ... ,該当する値がない場合に返す値)
確認する値には、インデックスで指定しなければならない CHOOSE 関数と違って文字列を指定できます。
たとえば、こちらのではセル A2 の確認する値が「A、B、C、D」といった文字列です。
「確認する値 (セル A2) が A だったら セル F2 (100) を結果として返す」
「確認する値 (セル A2) が B だったら セル F3 (200) を結果として返す」というように指定されています。
もちろん、値 もセル参照にできます。下図の場合は E 列を値として使用し、F 列を結果として使用しています。
この例だと、(ぜんぜん違うけれど、イメージ的に) VLOOKUP 関数での処理みたいですね。
CHOOSE や VLOOKUP 関数のように、ほかの関数と組み合わせて利用していくことになる新しい関数だと思います。
石田 かのこ