Excel中的Case函数等价物

50

我有一个有趣的挑战 - 我需要在Excel中对以下数据进行检查:

|   A  -   B  -   C  -  D   |
|------|------|------|------|
|  36  |   0  |   0  |   x  |
|   0  |  600 |  700 |   x  |
|___________________________|

请原谅我糟糕得惊人的 ASCII 艺术。所以我需要让 D 列(x)对相邻单元格进行检查,然后根据需要转换值。以下是标准:

如果 B 列大于 0,则一切正常并且我可以喝咖啡。如果不符合该要求,则需要根据表格将 A1 进行转换 - 例如,32 = 1420,并放置到 D 中。不幸的是,A 和它需要转换成的东西之间没有关系,因此创建计算公式是不可行的。

在这种情况下,一个 case 或 switch 语句会很完美,但我认为它不是 Excel 的本机函数。我也认为将一堆 =IF() 语句链接在一起有点疯狂,我在尝试了四次之后决定这是个坏主意(我的生活故事)。


4
似乎需要使用VLOOKUP函数。 - Blorgbeard
3
我要求您将其作为答案,先生。这可能非常适合这个任务。 - Nic
2
如果您的需求比 VLOOKUP 更复杂,您可以看一下这个链接:https://dev59.com/R1PTa4cB1Zd3GeqPjXjp#4719706 - jtolle
12个回答

0

微软用CHOOSE函数替换了SWITCH、IFS和IFVALUES。

=CHOOSE($L$1,"index_1","Index_2","Index_3")

0

最近我不幸又得暂时使用Excel 2010,我非常想念SWITCH函数。为了尽量减少我的痛苦,我想出了以下方法:

=CHOOSE(SUM((A1={"a";"b";"c"})*ROW(INDIRECT(1&":"&3))),1,2,3)
CTRL+SHIFT+ENTER

A1是你的条件所在的位置(可以是公式等)。好处是我们只需要提供一次条件(就像SWITCH一样),而且案例(在这个例子中:a,b,c)和结果(在这个例子中:1,2,3)是有序的,这使得推理变得容易。

它的工作原理如下:

  • Cond = {"c1"; "c2";...;"cn"}返回一个由TRUE或FALSE组成的N向量(其中TRUE和FALSE的行为类似于1和0)
  • ROW(INDIRECT(1&":"&n))返回一个有序数字的N向量:1;2;3;...;n
  • 两个向量的乘积将返回许多零和一个数字(位置),该数字与条件匹配
  • SUM只是将这个带有零和位置的向量转换为一个单独的数字,然后CHOOSE就可以使用它了
  • 如果您想添加另一个条件,请记住增加INDIRECT内的最后一个数字
  • 如果您想要ELSE情况,请将其包装在IFERROR公式中
  • 如果您提供了相同的条件超过一次,该公式将无法正常工作,但我想没有人会想这样做

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接