【问题标题】:Condensing nested if-statements with multiple criteria使用多个条件压缩嵌套的 if 语句
【发布时间】:2019-12-31 05:43:03
【问题描述】:

蓝色列是给定的数据,红色列是正在计算的数据。然后右边的表格就是我所引用的。因此,F2 将按以下步骤计算:

  1. 查看机械列 (D),如果单元格包含 LF,则选择列 K,否则选择列 L
  2. 查看成绩列 (E),如果单元格包含 RG,则选择 4:8 行,否则选择 9:12 行。
  3. 查看 Species 列 (A),如果单元格包含 MS,则选择第 5 行和第 10 行,否则......
  4. 如果每个选择最多的单元格都位于 K 和 L 列中,则复制到 F 列。
  5. 将 F 列乘以 C 列。

我不想为我的最终结果创建另一列。我在图片中分别显示了这两个步骤。所以 F 列应该是最终答案(F2 = 107.33)。参考表也可以采用不同的格式。

起初,我尝试使用嵌套 if 语句,但意识到我需要 20 多个 if 语句来处理所有不同的结果。我想我想使用 SEARCH 函数来查找不包含特定信息的单元格的天气。然后我可能会使用 match、if、v-lookup、index、search 的某种组合,但我不知道如何压缩这些。

有什么建议吗?

【问题讨论】:

  • 为什么是F2=83.20?根据你的逻辑,因为机械不包含LF,所以选择列L。因为等级是RG,所以选择是L4:L8。并且因为 Species 包含 MS,它应该是第 5 行或第 10 行,但第 10 行超出了L4:L8 的范围,那么,为什么第一种情况下的答案不应该是L5?我不是在抱怨,我只是想了解您的逻辑以便能够提供帮助
  • 同意,我也希望F2 等于104.00
  • 你是对的。我的错。 F2 应该是 104.00

标签: excel if-statement indexing match vlookup


【解决方案1】:

SUMPRODUCT 是您需要的功能。我很快根据您分享的内容创建了一些测试数据,如下所示:

然后我在单元格 F2 中输入以下公式

 =SUMPRODUCT(($I$4:$I$9=E2)*($J$4:$J$9=LEFT(A2,FIND(" ",A2)-1))*IF(ISERROR(FIND("LF",D2,1)),$L$4:$L$9,$K$4:$K$9))

该公式可能看起来有点吓人,但实际上非常简单,因为每个子公式都会检查您想要评估的条件。所以,例如,

($I$4:$I$9=E2)

正在寻找与$I$4:$I$9 范围内的当前行的GRADE 匹配的行,依此类推。 * 确保这样返回的数组相乘,并且只保留所有条件为 true 的值。

由于您的某些条件需要在SpeciesMachine 中查找部分内容,因此我在Sumproduct 中使用了LeftFind 函数

此公式仅根据匹配条件从 K 或 L 列返回值,您可以轻松扩展它或添加更多条件。

【讨论】:

  • 我相信在等式的末尾应该切换 KL 数组。另外,我的子示例中没有这个,但在我的数据集中,我有时在 J 列中没有 " "。所以公式返回 #VALUE
  • 如果您注意到,我在尝试查找“LF”时正在检查 ISERROR。因此,如果 LF 可用,则 ISERROR 返回 False,因此我们在公式的 False 部分返回 K 列。因此,K 和 L 似乎被正确放置。只要在 J 列中没有空格,您有两种选择: 1. 您可以在 J 列中使用完整值,例如 MS ITP、SDM ITP 等,然后只需将匹配条件更改为 $J$4:$J $9=A2。 2. 在公式的那部分也使用 ISERROR 函数。但我的建议是选择选项 1,因为另一个会导致非常复杂的公式。
  • 你是对的,我的专栏被翻转了。而且,是的,我决定选择选项 1。我一开始尝试了选项 2,但无法弄清楚。
猜你喜欢
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
相关资源
最近更新 更多