Google Sheets含多日期约束及优先级规则的多条件项目计数问题
Google Sheets统计公式问题排查与优化方案
原有公式存在的问题
- 语法错误:COUNTIFS参数要求为「范围-条件」交替的成对结构,你直接将SUMIFS作为COUNTIFS的参数传入不符合函数语法,同时还存在括号不匹配、参数拼接漏写&、EDATE函数第二个参数误用DAY()等低级语法问题
- 逻辑错误:优先级时长规则没有和前面的项目、状态、当月创建规则联动,单独的SUMIFS会统计到不符合前置筛选条件的条目
- 规则适配错误:时长规则是按天数计算阈值,使用EDATE(按月偏移)不符合需求,计算天数偏移直接用
TODAY()-n即可
调整后可实现需求的公式
假设你已提前将数据源的对应列设置为命名范围(Status、Project、Created_Date、Priority),如果未设置命名范围,直接替换为实际列范围即可:
=SUMPRODUCT( --(Status = Controls!$P:$P), --(Project = $A13), --(Created_Date >= DATE(Controls!$A$1, Controls!$B$1, 1)), --(Created_Date < EDATE(DATE(Controls!$A$1, Controls!$B$1, 1), 1)), --( (Priority = "Minor") * (Created_Date < TODAY() - 30) + (Priority = "Major") * (Created_Date < TODAY() - 14) + (Priority = "Blocker") * (Created_Date < TODAY() - 1) ) )
公式说明
- 用SUMPRODUCT代替嵌套的COUNTIFS/SUMIFS,原生支持多条件联动判断,避免多函数嵌套的语法冲突
- 所有判断条件前加
--将布尔值(TRUE/FALSE)转为数值1/0,相乘后只有所有条件都满足的条目才会被计入总数 - 优先级部分用加法逻辑,只要满足任意一种优先级对应的时长规则即可生效,和其他条件为与的关系,完全匹配你的需求
- 建议不要使用整列引用,将范围缩小到实际数据行(比如
Controls!$C$2:$C$2000)可大幅提升运算效率
内容的提问来源于stack exchange,提问作者Caleb Ruzicka
相关产品推荐
相关产品推荐

