Google Sheet计算月均体重排序异常无法生成图表问题求解
不规则体重记录的月均体重计算解决方案
问题根因
你之前的写法将年月拼接为文本字符串,会触发两个问题:
- 字符串排序规则会把
2024/10排在2024/9之前,导致年月顺序错乱 - 文本类型无法被图表识别为时间维度,无法正常制作时间序列图表
完全可以通过ArrayFormula实现需求,以下是两种可落地的方案:
方案1:无辅助列一步生成结果
无需提前生成年月标识列,单条公式直接输出标准日期格式的月均体重结果:
=ARRAYFORMULA( QUERY( {FILTER(EOMONTH(A3:A,0),A3:A<>""),FILTER(B3:B,A3:A<>"")}, "select Col1, avg(Col2) where Col1 is not null group by Col1 order by Col1 asc label avg(Col2) '月均体重'", 0 ) )
公式说明:
EOMONTH(A3:A,0):将A列的测量日期转换为对应月份的最后一天,保留标准日期格式,天然支持正确排序与图表时间轴识别FILTER函数过滤空值,避免无效计算- 输出的第一列为日期格式,你可以自定义单元格格式为
yyyy/mm,即可显示为年月样式,不影响底层日期属性
方案2:保留原有辅助列逻辑的修改方法
如果你希望保留单独的年月辅助列,只需要修改原有两处公式即可:
- 替换C列的年月生成公式:
=ARRAYFORMULA(IF(A3:A<>"",EOMONTH(A3:A,0),))
设置C列单元格格式为自定义yyyy/mm,即可显示为年月样式,底层仍为日期类型。
2. 替换QUERY计算公式:
=QUERY(A3:C,"select C, avg(B) where C is not null group by C order by C asc label avg(B) '月均体重'",0)
补充说明
如果你希望输出的月份标识为当月第一天而非最后一天,将公式中的EOMONTH(A3:A,0)替换为DATE(YEAR(A3:A),MONTH(A3:A),1)即可,效果完全一致。
内容的提问来源于stack exchange,提问作者Olen
相关产品推荐
相关产品推荐

