不新增列实现Countifs多列OR条件统计(非Black颜色计数)
解决方法
方案1:用SUMPRODUCT实现OR逻辑统计
无需新增列,直接用SUMPRODUCT整合多列条件,公式如下:
=SUMPRODUCT(--((L:L<>"Black")*(L:L<>"")+(M:M<>"Black")*(M:M<>"")+(N:N<>"Black")*(N:N<>"")+(O:O<>"Black")*(O:O<>"")+(P:P<>"Black")*(P:P<>""))>0)
- 逻辑解释:每一组
(列<>"Black")*(列<>"")会返回1(符合「非空且不是Black」)或0(不符合),将5列结果相加后,只要和大于0,就说明该行至少有一列满足条件;--用于将布尔值转换为数值,最终SUMPRODUCT统计所有符合条件的行数。
方案2:修正QUERY函数语法
之前QUERY无效大概率是语法错误,正确写法如下:
=QUERY(L:P,"SELECT COUNT(*) WHERE L <> 'Black' AND L <> '' OR M <> 'Black' AND M <> '' OR N <> 'Black' AND N <> '' OR O <> 'Black' AND O <> '' OR P <> 'Black' AND P <> '' LABEL COUNT(*) ''",0)
- 逻辑解释:在QUERY的
WHERE子句中,用OR连接每一列的AND条件(非空且不等于Black),LABEL COUNT(*) ''用于移除默认生成的表头,直接返回统计数值。
优化建议
- 尽量避免整列引用(如
L:L),替换为实际数据范围(如L2:L1000)可提升公式运行效率。 - 若需统计「所有列均为空或为Black」的行数,用总行数减去上述统计结果即可:
=COUNTA(L:L)-SUMPRODUCT(--((L:L<>"Black")*(L:L<>"")+(M:M<>"Black")*(M:M<>"")+(N:N<>"Black")*(N:N<>"")+(O:O<>"Black")*(O:O<>"")+(P:P<>"Black")*(P:P<>""))>0)
内容的提问来源于stack exchange,提问作者Daniel del Solar
相关产品推荐
相关产品推荐

