这个子产品有什么问题? 我想我没有能够使用OR产品

请看下面的公式:

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

我尝试在下列情况下计算出现次数:

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

但是这并不奏效。 一些错误的search导致我认为有些值被计算两次。 哪里不对? 我该如何解决?

可能超额计算的原因是最后一个条款中总结的两个expression式,即:

[Anst tom]=""

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

并不相互排斥,因为Excel认为空string“”比任何数字“更大”。

因此,上述两个子句的总和将导致对于任何一行(包括空string的当前满足其他条件)的结果为2。

解决这个问题的一个办法就是把这个条款进行比较,也就是说(我也收拾了一些多余的强制手段):

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

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

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

因为任何空string也将满足单个最后的子句,因此不需要额外的显式空白testing。

问候