我需要在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
不会抛出错误,它究竟意味着什么呢?
答案 0 :(得分:3)
=IF(SUMPRODUCT(($A$2:$A2=A2)*($B$2:$B2=B2))>1,0,1)
我们假设
$A$2:$A2=A2
为TRUE
且$B$2:$B2=B2
为FALSE
您得到: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}