= IF的详细解释(SUMPRODUCT(($ A $ 2:$ A2 = A2)*($ B $ 2:$ B2 = B2))> 1,0,1)?

时间:2013-12-27 16:37:41

标签: excel

我需要在Excel Pivot 2010中计算唯一值。我尝试了方法from here

但我不明白这个公式是如何运作的=IF(SUMPRODUCT(($A$2:$A2=A2)*($B$2:$B2=B2))>1,0,1)

SUMPRODUCT接受数组参数,但$A$2:$A2=A2是布尔值。

1)我们假设$A$2:$A2=A2为TRUE且$B$2:$B2=B2为FALSE,然后变为SUMPRODUCT(TRUE * FALSE )SUMPRODUCT (1 * 0 )

2)我尝试了一个随机表

      A     B
1    year   id
2    1990    1
3    1991    2
4    1992    3

我尝试使用此公式=A1:B4=2并且它引发了错误?那么为什么$A$2:$A10=A10不会抛出错误,它究竟意味着什么呢?

1 个答案:

答案 0 :(得分:3)

=IF(SUMPRODUCT(($A$2:$A2=A2)*($B$2:$B2=B2))>1,0,1)
  

我们假设$A$2:$A2=A2TRUE$B$2:$B2=B2FALSE

您得到:SUMPRODUCT(TRUE*FALSE)然后由excel解释为SUMPRODUCT(1*0),成为0

现在拖动公式时,假设一个单元格向下,引用将变为:

=IF(SUMPRODUCT(($A$2:$A3=A3)*($B$2:$B3=B3))>1,0,1)

你得到阵列结果。现在让我们再次拖动它:

=IF(SUMPRODUCT(($A$2:$A4=A4)*($B$2:$B4=B4))>1,0,1)

并且假设A2 = A3<> A4和B2 = B3 = B4。你得到:

=IF(SUMPRODUCT({FALSE, FALSE, TRUE}*{TRUE, TRUE, TRUE})>1,0,1)

哪个成为:

=IF(SUMPRODUCT({0, 0, 1}*{1, 1, 1})>1,0,1)

这变为:

=IF(SUMPRODUCT({0, 0, 1})>1,0,1)

SUMPRODUCT({0, 0, 1})为1。

整个公式因此返回0.

仅当列A中的最后一个单元格或列B中的最后一个单元格与第一个单元格不同时(如果范围仅为1个单元格大小),

1将被返回。


修改

对于您的示例,数组函数外部的数组公式倾向于返回第一个值,或者取决于它是哪个行/列,或者显然是错误。

检查结果的方法是在出错的单元格上按 F2 ,然后按 F9 。对于你的例子,你应该得到类似的东西:

{FALSE, FALSE, FALSE, FALSE; FALSE, FALSE, TRUE, FALSE}