Google Sheets按B组提取A列最大日期时间的Query函数失效问题
问题
我需要在Google Sheets中按B列分组,提取A列对应的最大日期时间(日期+时间),期望输出每组的最新日期时间。但使用公式=Query(Dati!A1:M,"Select B, Max(A) where B <> '' group by B label max(A) ''",0)后,没有得到正确的MAX结果。
示例数据:
A B 09/02/2023, 11:37:44 MARIO 09/02/2023, 11:42:41 MARIO 09/02/2023, 11:48:03 LUCA 09/02/2023, 13:03:06 LUCA 09/02/2023, 13:08:24 MARIO 09/02/2023, 13:15:57 LUCA 09/02/2023, 13:20:25 MARIO 09/02/2023, 13:23:38 MARIO 09/02/2023, 13:30:01 MARIO 09/02/2023, 13:33:36 LUCA 09/02/2023, 13:38:41 LUCA 09/02/2023, 13:41:38 LUCA 09/02/2023, 13:58:50 LUCA 09/02/2023, 14:04:57 LUCA
期望输出:
09/02/2023, 13:30:01 MARIO 09/02/2023, 14:04:57 LUCA
解决方案
方法1:修正Query公式(适配文本格式日期)
如果A列的日期时间是文本格式,Query的Max(A)会按字符串规则排序,而非日期逻辑,导致结果错误。可以先将A列转成日期数值计算最大值,再转回日期格式显示:
=ArrayFormula(QUERY({Dati!B:B, VALUE(Dati!A:A)}, "Select Col1, Max(Col2) where Col1 <> '' group by Col1 label Max(Col2) ''", 0))
设置结果列的格式为日期时间(比如DD/MM/YYYY, HH:MM:SS)即可正常显示。
方法2:用MAXIFS批量输出
先提取B列的唯一分组,再搭配MAXIFS批量计算每组的最大日期时间:
=ArrayFormula(IFERROR({UNIQUE(FILTER(Dati!B:B, Dati!B:B<>"")), MAXIFS(Dati!A:A, Dati!B:B, UNIQUE(FILTER(Dati!B:B, Dati!B:B<>"")))}))
方法3:统一A列为标准日期时间格式
选中A列,点击顶部菜单栏「格式」→「数字」→「日期时间」,将文本格式转成标准日期时间格式,之后直接使用你原来的Query公式就能得到正确结果。
内容的提问来源于stack exchange,提问作者Alexandre
相关产品推荐
相关产品推荐

