Excel。式で指定した値を比較して最初に一致する値を返すのがSWITCH関数です。
<関数辞典:SWITCH関数>
SWITCH関数
読み方: スイッチ
分類: 論理
SWITCH(式,値1,結果1,[既定または値2,結果2],…)
式で指定した値を比較して最初に一致する値を返す
【Excel・Word・PowerPoint・Access】あなたの「困った」を解決!10年以上の経験が詰まった、現場の疑問から生まれた実践テクニック集。作業効率を劇的に上げるOffice活用術をお届けします。
<関数辞典:SWITCH関数>
SWITCH関数
読み方: スイッチ
分類: 論理
SWITCH(式,値1,結果1,[既定または値2,結果2],…)
式で指定した値を比較して最初に一致する値を返す
日付から曜日を求める関数があります。
それがWEEKDAY関数です。
このWEEKDAY関数は、日とか月とかというような文字ではなくて、日曜日を1、月曜日を2というような数値で表示する関数です。
そこで、数値で表示されても、曜日名がわからないと何が何だかということになってしまうので、色々な関数と組み合わせます。
B2の数式は
WEEKDAY関数をつかった場合です。
=WEEKDAY(A2,1)
結果は、数値として表示されています。
これでは、何曜日か一目ではわかりません。
C2の数式は、
IF関数とWEEKDAY関数を使った場合です。
=IF(WEEKDAY(A2,1)=1,"日",IF(WEEKDAY(A2,1)=2,"月",IF(WEEKDAY(A2,1)=3,"火",IF(WEEKDAY(A2,1)=4,"水",IF(WEEKDAY(A2,1)=5,"木",IF(WEEKDAY(A2,1)=6,"金","土"))))))
とんでもなく、長い数式になっています。
これでは、可読性が悪いですし、ミスも起こりやすくなります。
それならば、IFS関数をつかってみたらどうなるのでしょうか。
D2の数式は、IFS関数とWEEKDAY関数をつかっています。
=IFS(WEEKDAY(A2,1)=1,"日",WEEKDAY(A2,1)=2,"月",WEEKDAY(A2,1)=3,"火",WEEKDAY(A2,1)=4,"水",WEEKDAY(A2,1)=5,"木",WEEKDAY(A2,1)=6,"金",TRUE,"土")
IF関数よりかは、IFS関数はIFの中にIF関数をいれていないので、可読性は改善されていますが、WEEKDAY関数が曜日ごとにでてきますので、作成時にミスを起こす可能性は高いかと思われます。
WEEKDAY関数を何度もつかうというのが、可読性が悪化する要因ならば、LET関数をつかったらどうなるのか、確認してみましょう。
LET関数とWEEKDAY関数を組み合わせたのが、E2の数式です。
=LET(yb,WEEKDAY(A2,1),IF(yb=1,"日",IF(yb=2,"月",IF(yb=3,"火",IF(yb=4,"水",IF(yb=5,"木",IF(yb=6,"金","土")))))))
だいぶ、改善されましたが、LET関数自体の馴染みがないので、理解する必要がありそうです。
なお、LET関数は、数式内で変数を定義し、その変数を繰り返し利用できる関数です。
これにより、同じ計算や値を何度も書く必要がなくなり、数式の可読性や効率が大幅に向上します。
LET関数の引数は、=LET(変数1, 値1, 変数2, 値2, ..., 計算式) となっており、最初に変数とその値を定義し、最後にその変数を用いた計算式を記述する関数です。
それならば、WEEKDAY関数が何度も出てこない関数はないものでしょうか。
F2には、SWITCH関数をつかってみました。
=SWITCH(WEEKDAY(A2,1),1,"日",2,"月",3,"火",4,"水",5,"木",6,"金",7,"土")
IF関数やIFS関数をつかうよりも、可読性もいいですし、数式自体もシンプルですね。
さらに、シンプルになるのが、G2のCHOSE関数を使った場合です。
=CHOOSE(WEEKDAY(A2,1),"日","月","火","水","木","金","土")
CHOOSE関数は、SWITCH関数とことなり、1ならばという設定をしなくても、自動的に1ならばという設定になっています。
これまでは、WEEKDAY関数をつかうと、数値が算出されて、曜日がわからないので、他の関数と組み合わせていましたが、一番効率がいいのは、TEXT関数だと思います。
H2の数式は、
=TEXT(A2,"aaa")
たったこれだけです。
TEXT関数は、表示形式を反映する関数です。
”aaa”とするだけで、日付を曜日に変更することができます。
関数の組み合わせによって、結果は同じですが、可読性・修正しやすい数式のほうがいいように思えますね。
今回は、SUMX2MY2関数~SYD関数までをご紹介しております。
SUMX2MY2関数
読み方: サム オブ エックススクエアエド マイナス ワイ スクエアエド
読み方: サムエックスジジョウマイナスワイジジョウ
SUMX2MY2(配列1,配列2)
Σ(x^2-Y^2)。対応する組の要素の平方差の合計します
SUMX2PY2関数
読み方: サム オブ エックス スクエアエド プラスワイ スクエアエド
読み方: サムエックスジジョウプラスワイジジョウ
SUMX2PY2(配列1,配列2)
Σ(x^2+Y^2)。対応する組の要素の平方和の合計します
SUMXMY2関数
読み方: サム オブ エックス マイナス ワイ スクエアエド
読み方: サムエックスマイナスワイジジョウ
SUMXMY2(配列1,配列2)
Σ(x-Y)^2。 対応する組の要素の差を2乗して合計します
SWITCH関数
読み方: スイッチ
SWITCH(式,値1,結果1,[既定または値2,結果2],…)
式で指定した値を比較して最初に一致する値を返す
SYD関数
読み方: エスワイディー
読み方: サムオブイヤーズディジット
SYD(取得価額,残存価額,耐用年数,期)
減価償却費を算術級数法で算出します(日本では利用が認められてない)
Sum of Year's Digit depreciationの略
1位の得点なら「A」。
2位が「B」で3位が「C」として、それ以外は空白とする場合、次の表のように、手早く算出するにはどのようにしたらいいのでしょうか。
そのため、処理が面倒になりがちです。
そこで、SWITCH関数とRANK.EQ関数を組み合わせることで、手早く算出することができます。
D2に設定した数式は、
=SWITCH(RANK.EQ(C2,$C$2:$C$7,0),1,"A",2,"B",3,"C","")
設定した数式をオートフィルでコピーしています。
これで、1位はAとして、該当しない場合は、空白というように設定することができました。
SWITCH関数の引数を確認しておきましょう。
SWITCH関数は、「多分岐処理」を行うことができる関数です。
このSWITCH関数の最初の引数は、「式」で、この式の結果をこのあとの引数で判別し設定していきます。
やりたい処理は、1位から3位を算出したいわけです。
そこで、順位を算出するならば「RANK.EQ関数」をつかうことで算出することができます。
RANK.EQ関数をつかえば、仮に1位が複数あった場合でも対応してくれます。
この結果をもとにして、2つ目以降の引数が対応していきます。
2つ目の引数は、「値1」です。
最初の引数の結果が「1」の場合ということなので引数には、「1」と設定します。
3つ目の引数は、「結果1」です。2つ目の引数と合致した場合に、結果1で設定した処理をするわけです。
2つ目の引数の結果「1」だったら、「A」と表示したいので、結果1に設定する値は「A」となるわけです。
あとは、2と3を繰り返し設定します。
そして、1位~3位以外は、空白にしたいので、最後の引数の値に「””(ダブルコーテーション×2)」を設定すれば、数式は完成します。
SWITCH関数は、色々つかってみると、日頃使っている数式がより、わかりやすくなるかもしれませんね。