如何使用 Excel Switch 函数与值范围进行比较

如何使用 Excel Switch 函数与值范围进行比较

我想使用 SWITCH 函数来检测一个数字是否介于另外两个数字之间,如果不介于之间,则测试下一个数字范围,依此类推。

目的是得到一个单元格答案,然后将公式复制到一列(此示例中为日期列)。

我尝试了这个:

=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您可以尝试、SWITCHFILTER和函数的组合NOTISERROR如下面的公式所示

=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))))
  • LET 函数:允许仅计算x一次(即 SWITCH 公式)。
  • 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")

相关内容