排除SUMPRODUCT功能

时间:2014-04-25 17:15:22

标签: excel excel-formula formulas array-formulas

我需要计算一个固定单元格与另一列中的单元格匹配的行数,并且第三列中的相应单元格不为空。然而,我的公式表现得很奇怪,而且我不确定如何解决它......

以下是单元格中的原始数据:

enter image description here

A到D列中的所有单元格仅包含值。在细胞E2中是公式:

= SUMPRODUCT(( - ((A $ 1:A $ 6)= B2))*(IF(ISBLANK(C $ 1:C $ 6),0,1)))

但是,对于单元格E2,我期望的值是2.这可能是A列中与单元格B2中的值匹配且C列中相应单元格不为空白的单元格数。不幸的是,它为细胞E2产生3而不是2,我无法弄清楚原因。为了帮助我解决问题,我为单元格G1到G6输入了以下数组公式:

= { - ((A $ 1:A $ 6)= B2)}

还有以下数组H1到H6的数组公式:

{= IF(ISBLANK(C $ 1:C $ 6),0,1)}

最后,我为单元格I2输入了以下常规公式:

= SUMPRODUCT((G1:G6)*(H1:H6))

这确实产生了2的期望结果。但是,我无法弄清楚这两种方法之间的区别。我的实际电子表格看起来像列A,B和C,因此E2中的公式(如果它可以产生所需的结果)是可取的。

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试输入公式作为数组公式(Ctrl + Shift + Enter),这应该有效。

答案 1 :(得分:1)

正如@ Pash101正确指出的那样,你应该按 CTRL + SHIFT + ENTER 来评估你的公式,或者更好地使用以下任何一个而不是公式(没有数组条目):

for Excel 2007及更高版本:

=COUNTIFS(A$1:A$6,B2,C$1:C$6,"<>")

for Excel 2003:

=SUMPRODUCT((A$1:A$6=B2)*(C$1:C$6<>""))