Google Sheets统计唯一日期及日期排序异常问题求助
解决Google Sheets日期文本化后排序错误的问题
核心问题是你用TEXT函数将日期转为字符串后,Query会按文本字符串的字母顺序排序,而非日期的时间顺序,所以出现了May-Mar-Apr这类不符合逻辑的排序结果。以下是几种直接有效的解决方法:
方法一:用Query内置日期函数直接处理(最简洁)
不需要转文本,直接用Query的DATE()函数提取日期部分,保留日期格式进行分组和排序:
=QUERY( 'Current Data'!D2:D, "SELECT COUNT(D), DATE(D) WHERE D IS NOT NULL AND D > DATE'2020-08-01' GROUP BY DATE(D) ORDER BY DATE(D) DESC LABEL COUNT(D) '数据量', DATE(D) '日期'", 1 )
之后只需将结果的日期列设置为YYYY-mmm-dd的显示格式即可(右键列 → 格式 → 数字 → 自定义日期和时间)。
方法二:提取日期数值进行分组
利用Google Sheets中日期本质是数值的特性,用INT()提取纯日期的数值部分,以此作为分组和排序的依据:
=QUERY( ARRAYFORMULA({INT('Current Data'!D2:D), 'Current Data'!D2:D}), "SELECT COUNT(Col2), Col1 WHERE Col1 IS NOT NULL AND Col1 > DATE'2020-08-01' GROUP BY Col1 ORDER BY Col1 DESC LABEL COUNT(Col2) '数据量', Col1 '日期'", 1 )
同样,设置日期列的显示格式为YYYY-mmm-dd即可。
方法三:将文本日期转回日期格式(兼容原公式)
如果想保留原思路,可在Query结果中将文本日期转回日期格式,再基于日期排序:
=ARRAYFORMULA( { QUERY( ARRAYFORMULA(TEXT('Current Data'!D2:D, "YYYY-mmm-dd")), "Select Count(Col1) where Col1 is not null and Col1> '2020-08-01' group by Col1 order by Col1 Desc" ), DATEVALUE(QUERY( ARRAYFORMULA(TEXT('Current Data'!D2:D, "YYYY-mmm-dd")), "Select Col1 where Col1 is not null and Col1> '2020-08-01' group by Col1 order by Col1 Desc" )) } )
生成结果后,将第二列设置为日期格式,即可按正确的时间顺序排序。
内容的提问来源于stack exchange,提问作者Brent Eldridge
相关产品推荐
相关产品推荐

