计算7日均值时对SUM结果用FLOOR数值异常,如何先算SUM再取整
问题原因
你的猜测不成立,电子表格的函数运算严格遵循「括号内优先计算」的规则,你当前的写法本身就是先完成SUM求和、平均值计算后,再调用FLOOR处理最终结果,FLOOR不会作用于求和过程中的单个数值。
出现大幅偏差的核心原因是你对FLOOR函数的参数逻辑理解有误:FLOOR(待处理数值, 舍入基数)的作用是将待处理数值向下舍入到最接近的舍入基数的整数倍,你设置的舍入基数为1.1,相当于强制要求最终结果必须是1.1的整数倍,自然会和原始7日平均值产生较大差距。
举个简单的例子:如果你的7日平均值计算结果为6,FLOOR(6,1.1)的返回结果是5.5(1.15=5.5,1.16=6.6大于6,因此向下取最接近的倍数),偏差直接产生。
解决方法
根据你的实际舍入需求调整FLOOR的第二个参数即可:
- 如果需要向下取整到整数,将舍入基数改为1:
FLOOR(SUM(IFERROR(QUERY(B2:B500, "limit 7 offset " & COUNTA(B2:B500)-7))) / 7, 1)
- 如果需要向下保留1位小数,将舍入基数改为0.1;保留2位小数则改为0.01,以此类推。
额外优化建议
你当前的公式在B列有效数据不足7条时,COUNTA(B2:B500)-7会得到负数,导致QUERY报错,建议增加行数判断逻辑:
=IF(COUNTA(B2:B500)>=7, FLOOR(SUM(IFERROR(QUERY(B2:B500, "limit 7 offset " & COUNTA(B2:B500)-7))) / 7, 1), "数据不足")
内容的提问来源于stack exchange,提问作者Fluxian
相关产品推荐
相关产品推荐

