仅当符合多个条件时才计算部分列中的唯一值

仅当符合多个条件时才计算部分列中的唯一值

我正在尝试学习使用 SUMPRODUCT 根据多个条件计算唯一值,但无法停止。通配符不适用于 sumproduct。而且有些单元格可能为空白。(我使用的是 Mac Excel v 16.33,如果这有区别的话。)

我需要计算 A6:A100 中唯一的日期值,其中 E6:E100 是以下任一个:

P CD       Project Cert K9
P UCD      Project Uncert K9
P O        Project Overhead
P S        Project Support

示例数据

更新:我思考我明白了。(请忽略不同的行号。)如果您有更高效/更优雅的解决方案,请提供。我想改进这一点!

=SUMPRODUCT((IF(LEFT(E20:E100,1)="P", TRUE,FALSE))/(IF(COUNTIFS(A20:A100,A20:A100,E20:E100,"*Project*")=0,1,COUNTIFS(A20:A100,A20:A100&"",E20:E100,"*Project*"))))

答案1

如果你的分子<条件>/<计数>除法为LEFT(E6:E99)="P"¹,那么您应该在 COUNTIFS 中复制该条件,而不是用通配符搜索替换它"*project*"

将分子条件的逻辑逆元添加到分母。这可以避免#DIV/0!错误。

你的IF(LEFT(E20:E100,1)="P", TRUE,FALSE)是多余的。LEFT(E20:E100,1)="P"是合乎逻辑的(又名布尔值) 语句本身您不需要检查它是否为 TRUE/FALSE,然后提供 TRUE/FALSE。

=SUMPRODUCT((LEFT(E6:E99)="P")/(COUNTIFS(A6:A99,A6:A99,E6:E99,"P*")+(LEFT(E6:E99)<>"P")))

在此处输入图片描述


¹ LEFT 函数默认为单个字符,因此 LEFT(A6:A99) 与 LEFT(A6:A99, 1) 相同。

相关内容