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

图片供参考

有2个input: A1B1

在D列中,有许多types的对象A.在列B中,有许多types的对象B.

以下是公式应该做的事情:
如果(D2是'A1',G2是'B1')那么,如果(E2大于F2),减去E2和F2(在这个例子中是5 – 4),否则减去F2到E2 12)。
如果没有匹配,不要做任何事情,只是跳过这一行。

我想这样做一个数组公式( Ctrl + Shift + Enter ),所以它将总结一切。

在这个例子中,输出将是-1,因为sum(和(5-4)(2-4))。

到目前为止,我有以下几点:

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

但它不能正常工作,因为我不确定Excel如何读取减法部分。 我想能够减去find组合的那一行的值。

如果你所需要的只是将列E减去所有匹配的列E,那么考虑下面的数组公式:

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

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

这将会包含与你的input相匹配的所有减法(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} VVVVVVV {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)) 

请记住,Excel中的TRUE与nubmer 1是相同的, FALSE是0。

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

另外你的E和F列的规则听起来像减去更大的数字,这是相同的:

 |4-5|=1 

或者在Excel公式表示法中:

 ABS(4-5)