谷歌表格:如何基于ID与时间戳列查询唯一最新条目并返回指定行
谷歌表格提取ID对应最新时间戳条目解决方案
核心需求是按ID分组,保留每组中时间戳(D列)最新的唯一条目,你之前的公式未关联ID分组逻辑,导致结果不符合预期,以下是两种可行的解决方案:
方案1:用SORT+SORTN组合(推荐)
直接通过排序+分组提取,逻辑清晰:
=SORTN(SORT(A1:E4,1,TRUE,4,FALSE),9^9,2,1,TRUE)
- 内层
SORT(A1:E4,1,TRUE,4,FALSE):先按ID列(第1列)升序排序,再按时间戳列(第4列)降序排序,确保每个ID下最新的条目排在组内首位 - 外层
SORTN(...,9^9,2,1,TRUE):启用分组模式(参数2),按ID列(参数1)分组,保留每组的首条数据,9^9表示提取所有符合条件的行
方案2:用QUERY函数嵌套
通过聚合查询获取每个ID的最新时间戳,再匹配原数据:
=QUERY(A1:E4,"select A,B,C,D,E where D matches '"&TEXTJOIN("|",TRUE,QUERY(A1:E4,"select max(D) group by A"))&"'",1)
- 内层
QUERY(A1:E4,"select max(D) group by A"):按ID分组,获取每个ID对应的最大时间戳 - 外层QUERY通过
matches匹配这些时间戳,提取对应完整行
原公式问题分析:你之前用的=SORT(SORTN(QUERY(A1:E4; "select *");9^9;2;4;1);4;1)仅按时间戳列去重,未结合ID做分组,无法确保每个ID都保留最新条目。
内容的提问来源于stack exchange,提问作者onit
相关产品推荐
相关产品推荐

