数组公式:嵌套ifs和同行计算

Array formulas: nested ifs and same row calculation

有 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 如何读取减法部分。我希望能够减去找到组合的行的值。

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

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

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

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

细分如下:

D2:D12=$BG2:G12=$B 将生成包含 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

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

=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)