如何在Google Sheets单个Query函数中使用avg与datediff?
Google Sheets 计算最近20条有效记录的日期差平均值
报错原因
你直接使用 avg(datediff(F, E)) 触发解析错误,核心原因是Google Sheets的QUERY函数语法规则限制:聚合函数(如AVG)内部不能直接嵌套DATEDIFF这类计算型函数,因此无法通过添加符号修改单条QUERY语句实现需求。
可行方案
你的嵌套QUERY方案是完全正确的,它通过内层QUERY先筛选出最近20条有效记录的日期差,再用外层QUERY计算平均值,代码如下:
=QUERY(QUERY(mytablewithdates[#ALL]; "Select datediff(F, E) where E is not null and F is not null order by F desc limit 20"; 1); "Select avg(Col1)")
如果你的数据区域没有表头,可以把内层QUERY的第三个参数改为0,避免把第一条数据误当作表头处理:
=QUERY(QUERY(mytablewithdates[#ALL]; "Select datediff(F, E) where E is not null and F is not null order by F desc limit 20"; 0); "Select avg(Col1)")
另外,也可以用FILTER+INDEX+DATEDIFF+AVERAGE的组合实现,无需嵌套QUERY:
=AVERAGE(DATEDIFF(INDEX(SORT(FILTER({E:F}; NOT(ISBLANK(E))*NOT(ISBLANK(F))); 1; FALSE); SEQUENCE(20); 2); INDEX(SORT(FILTER({E:F}; NOT(ISBLANK(E))*NOT(ISBLANK(F))); 1; FALSE); SEQUENCE(20); 1)))
这个公式逻辑是:先筛选出E、F列均不为空的记录,按F列降序排序后取前20条,计算每条的日期差,最后求平均值。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

