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

时间:2015-04-17 15:11:37

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

Image for reference here

有两个输入:A1B1

在D栏中,有许多类型的对象A. 在B列中,有许多类型的对象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如何读取减法部分。我希望能够减去找到组合的行的值。

2 个答案:

答案 0 :(得分:0)

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

=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&f;用于不匹配的数组:

{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将导致第3个数组包含减去的值:

 {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

答案 1 :(得分:0)

如果我理解你的要求是正确的,那么你的答案就是:

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

请记住,TRUE到Excel与nubmer 1相同,FALSE为0。

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

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

相同
|4-5|=1    

或者在Excel公式表示法中:

ABS(4-5)