Excel の Switch 関数を使用して値の範囲を比較する方法

Excel の Switch 関数を使用して値の範囲を比較する方法

SWITCH 関数を使用して、数値が他の 2 つの数値の間にあるかどうかを検出し、そうでない場合は次の数値の範囲をテストするなどしたいと思います。

目的は、1 つのセルに答えを出し、その数式を列 (この例では日付) にコピーすることです。

これを試してみました:

=SWITCH(MONTH(44562);{1;2;3};"T1";{4;5;6};"T2";{7;8;9};"T3";{10;11;12};"T4")

しかし、関数は配列の各要素に対してスピルし、比較は配列のレベルごとに行われます。

IFS 関数を使用してこれを回避することもできますが、それには各引数のペアに対して論理テストを記述 (および評価) する必要があり、それを回避したいのです。

おそらく私は間違った角度からこの問題に取り組んでいるのでしょうが、それでも SWITCH のこの使用法が何らかの形で可能かどうかを知りたいです。よろしくお願いします。


回答 :

Reddy Lutonadio のものは、異なる値のリストに対して非常に柔軟です。私が受け入れたのはこれです。

Ron Rosenfeld のものは非常にコンパクトで効率的であり、実数で動作しますが、リストの長さは同じである必要があります。

私の意見: より複雑な状況では IFS を使用します (LET 関数も追加するとよいでしょう)。

答え1

以下の式に示すように、、、、関数のLET組み合わせを試すことができますSWITCHFILTERNOTISERROR

=LET(x,SWITCH(MONTH(F1),{1,2,3},"T1",{4,5,6},"T2",{7,8,9},"T3",{10,11,12},"T4"),FILTER(x,NOT(ISERROR(x))))
  • xLET 関数: (SWITCH 式) を 1 回だけ計算できます。
  • NOT (ISERROR) 関数: エラーのない行を返します。
  • FILTER 関数: 正しい値のみを返します。

ここに画像の説明を入力してください

答え2

Simpler は、あなたのニーズに十分対応できるほど柔軟ではないかもしれません。しかし、同じ結果を返すには、次を使用しますSWITCH

=SWITCH(INT((MONTH(A1)-1)/3)+1,1,"T1",2,"T2",3,"T3",4,"T4")

より単純な数式でも同じ結果を得ることができます。

=TEXT(INT((MONTH(A1)-1)/3)+1,"\T0")    
=CHOOSE(INT((MONTH(A1)-1)/3)+1,"T1","T2","T3","T4")

関連情報