【问题标题】:Array formulas: nested ifs and same row calculation数组公式:嵌套 if 和同一行计算
【发布时间】:2015-04-17 15:11:37
【问题描述】:

有 2 个输入:A1B1

在 D 列中,有多种类型的对象 A。 在 B 列中,有多种类型的对象 B。

这是公式应该做的:
如果 (D2 是 'A1' 并且 G2 是 'B1') 那么,如果 (E2 大于 F2),则减去 E2 和 F2(在本例中为 5 - 4),否则将 F2 减去 E2(就像行中发生的那样12).
如果没有匹配,什么也不做,直接跳过该行。

我想将其作为数组公式 (Ctrl+Shift+Enter),所以它最终会总结所有内容.

在本例中,输出为 -1,因为 sum(and(5-4)(2-4)) 。

到目前为止,我有以下内容:

{=SUM(IF((D2:D12="A1")+(G2:G12="B1");E2:E12-F2:F12;0))} 

但它不能正常工作,因为我不确定 Excel 如何读取减法部分。我希望能够减去找到组合的行的值。

【问题讨论】:

  • 为什么是2-4"如果(E2 大于 F2),则减去 E2 和 F2(本例中为 5 - 4),否则将 F2 减去 E2" 但在本例中,E (4) IS 大于 F ( 2)所以你不会做4-2吗?
  • 没错。上传时忘记重新截屏了。感谢您注意到错字。

标签: excel excel-formula excel-2010 excel-2013 array-formulas


【解决方案1】:

如果您只需要在所有匹配项中将 E 列减去 F 列,请考虑以下数组公式:

=SUM((D2:D12=$B$2)*(G2:G12=$B$3)*(E2:E12-F2:F12))

(如果需要,可以通过对要减去的内容进行额外检查来更新)

这将SUM 包含与您的输入匹配的所有减法(E 列)-(F 列)。

这是细分:

D2:D12=$B$2G2:G12=$B$3 将生成包含 1 表示匹配和 0 表示不匹配的数组:

{A1,A2,A3, -,A1, -, -,A4,A5,A1,A1}  {B1, -,B1, -,B4, -, -,B6,B5,B2,B1}
 V           V              V  V     V     V                       V
{1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1 }  {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1 }

E2:E12-F2:F12 将产生由减去的值组成的第三个数组:

 {5, 5, 3, 1, 3, 3, 7, 3, 9, 7, 4}
-{4, 3, 4, 5, 6, 5, 9, 6, 7, 8, 2}
={1, 2,-1,-4,-3,-2,-2,-3, 2,-1, 2}

将它们全部相乘将得到如下结果:

 {1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1}
x{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}
x{1, 2,-1,-4,-3,-2,-2,-3, 2,-1, 2}
={1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}

那么当然SUM 就可以了:

SUM({1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}) = 3

【讨论】:

  • 很详细的解答和解释!非常感谢
  • 知道为什么 '{=MEDIAN(($B$46:$B$1930=$B4)*($D$46:$D$1930-$F$46:$F$1930))}' 返回结果为 0,而 sum 或 max 工作正常吗? (中位数不是真正的 0)。应该没什么不同吧?
  • @ichimok 我不相信MEDIAN 可以直接获取数组。但是您可以使用 IF 语句来获取数组并将其传递给 MEDIAN,例如:=MEDIAN(IF($B$46:$B$1930=$B4,$D$46:$D$1930-$F$46:$F$1930))}
【解决方案2】:

如果我正确理解了您的要求,那么您的答案将是:

=SUM((D2:D12="A1")*(G2:G12="B1")*ABS(E2:E12-F2:F12))

记住TRUE 到 Excel 与数字 1 相同,FALSE 为 0。

因此,如果我的公式中有任何 D 或 G 列不匹配的行将乘以 0。

你关于 E 和 F 列的规则对我来说听起来像 从较大的数字中减去较小的数字 这与:

|4-5|=1    

或者用 Excel 公式表示法:

ABS(4-5)

【讨论】:

  • 绝对不是解决方案,因为我需要对负值求和而不是使它们为正。不过,感谢您的意见,因为其余的工作都很好!
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
相关资源
最近更新 更多