如何用Google Sheets Query函数筛选最新日期的最后一行数据
Google Sheets Query函数实现指定筛选规则
需求匹配方案
要搞定「单日期只有一行就留着,有多行就取最新日期的最后一行」这个需求,之前直接用limit 1加offset 1会丢单条数据(比如Lucy那行),得换个嵌套Query的思路,既保证效率又兼容所有情况。
可用公式(假设数据在A:D列,表头行是第1行)
=QUERY( QUERY(A:D, "SELECT * ORDER BY A DESC", 1), "SELECT * WHERE A = '"&INDEX(QUERY(A:D, "SELECT MAX(A)", 1),2,1)&"' LIMIT 1 OFFSET "&COUNTA(QUERY(A:D, "SELECT A WHERE A = '"&INDEX(QUERY(A:D, "SELECT MAX(A)", 1),2,1)&"'", 1))-1&"", 1 )
公式逐段解释
- 内层排序Query:
QUERY(A:D, "SELECT * ORDER BY A DESC", 1)
先把所有数据按日期(A列)从新到旧排好,方便后续定位最新日期 - 抓取最新日期:
INDEX(QUERY(A:D, "SELECT MAX(A)", 1),2,1)
用MAX(A)直接拿到最新的日期值,再通过INDEX把结果从查询返回的表格里提取出来 - 计算最新日期的行数:
COUNTA(QUERY(A:D, "SELECT A WHERE A = '"&最新日期&"'", 1))
统计这个最新日期下一共有多少行数据,偏移量就用「行数-1」来定位最后一行 - 外层筛选Query:把最新日期的所有行筛出来,再通过
OFFSET 行数-1加LIMIT 1精准挑出最后一行
兼容单条数据的逻辑
如果最新日期下只有1条数据,COUNTA返回1,OFFSET 0配合LIMIT 1就会直接保留这唯一的一行,不会出现数据丢失的情况。
内容的提问来源于stack exchange,提问作者zongshita
相关产品推荐
相关产品推荐

