这个子产品有什么问题?我想我还没能在sumproduct中使用OR

时间:2015-07-20 14:02:41

标签: excel

请参阅以下公式:

=SUMPRODUCT(--(tEnvironment[Resultatenhet]=[@Resultatenhet]);--(tEnvironment[Anst fr o m]<=[@Period]);1*--(tEnvironment[Anst t o m]="")+--(tEnvironment[Anst t o m]>=DATE(YEAR([@Period]);MONTH([@Period])+1;0)))

我尝试计算出现次数:

tEnvironment[Resultatenhet]=[@Resultatenhet]
AND
tEnvironment[Anst fr o m]<=[@Period]
AND
(tEnvironment[Anst t o m]="" OR tEnvironment[Anst t o m]>=DATE(YEAR([@Period]);MONTH([@Period])+1;0)))

但它并没有起作用。一些错误搜索导致我认为某些值被计算两次。怎么了?我该如何解决?

1 个答案:

答案 0 :(得分:1)

潜在过度计数的原因是最后一项中总结的两个表达式,即:

[Anst t o m]=""

[Anst t o m]>=DATE(YEAR([@Period]),MONTH([@Period])+1,0)

不是互斥的,因为Excel认为空字符串“”比任何数字都“更大”。

因此,对于 Anst tom 字段包含空字符串(并且当然满足其他条件)的任何行,对上述两个子句的求和将导致2的结果。

解决这个问题的一种方法是使该条款具有可比性,即(我还整理了一些多余的强制措施):

=SUMPRODUCT(--([Resultatenhet]=[@Resultatenhet]),--([Anst fr o m]<=[@Period]),--(([Anst t o m]="")+([Anst t o m]>=DATE(YEAR([@Period]),MONTH([@Period])+1,0))>0))

更重要的是,如果在所有情况下,所有空白单元格都包含空字符串“”(因此技术上不是空的),那么,通过上面给出的逻辑,您可以简单地使用:

=SUMPRODUCT(--([Resultatenhet]=[@Resultatenhet]),--([Anst fr o m]<=[@Period]),--([Anst t o m]>=DATE(YEAR([@Period]),MONTH([@Period])+1,0)))

因为任何空字符串也会满足single,final子句,因此不需要对空白进行额外的显式测试。

此致