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

我需要在Excel Pivot 2010中计算唯一的值。我尝试了从这里开始的方法

但是我不明白这个公式是如何工作的=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)我试了一个随机表

  AB 1 year id 2 1990 1 3 1991 2 4 1992 3 

我试过使用这个公式=A1:B4=2 ,它会抛出一个错误? 那么为什么不$A$2:$A10=A10会抛出一个错误,这到底是什么意思?

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

1只有在列A中的最后一个单元格或列B中的最后一个单元格与第一个单元格不同时才会返回(如果范围只有1个单元格大小)。


编辑:

至于你的例子,数组函数外部的数组函数倾向于返回第一个值,或者取决于它的行/列的值,或者显然是一个错误。

你可以做什么来检查结果是在错误单元格上按F2 ,然后按F9键。 对于你的例子,你应该得到像这样的东西:

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