You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Sheets中按日期范围和名称筛选并获取最后记录的最终金额

在Google Sheets中筛选后提取最后一行金额的方法

嘿,既然你有SQLite的使用经验,那理解Google Sheets里的解决方案应该会很顺畅!我给你整理了几种实用的方法,帮你实现按指定名称和日期范围筛选后,提取最后一行的最终金额:

方法1:用QUERY函数(最贴近SQL逻辑)

因为你熟悉SQL,QUERY函数的语法和SQL非常相似,上手几乎零成本。假设你的数据结构是:

  • A列:日期(格式需为Google Sheets可识别的日期格式)
  • B列:名称
  • D列:最终金额

你可以用这个公式:

=INDEX(QUERY(A:D, "SELECT D WHERE B = 'Sandeep' AND A >= date '2016-01-01' AND A <= date '2016-11-06' ORDER BY A DESC LIMIT 1"), 1)

逻辑解释:

  • QUERY部分就像SQL语句:筛选名称为'Sandeep'、日期在指定范围内的记录,按日期倒序排列后取第一条(也就是最后一条符合条件的记录)
  • INDEX(...,1)是把QUERY返回的数组结果转换成单个单元格值,避免出现数组溢出的情况

方法2:用INDEX+FILTER组合(直观易懂)

如果更喜欢用基础函数组合,INDEX+FILTER的搭配也很实用,而且新版本Google Sheets支持负索引,简化了操作:

=INDEX(FILTER(D:D, B:B="Sandeep", A:A>=DATE(2016,1,1), A:A<=DATE(2016,11,6)), -1)

逻辑解释:

  • FILTER先筛选出所有符合名称和日期范围的金额数据,返回一个数组
  • INDEX(..., -1)直接取这个数组的最后一个元素,也就是最后一行的金额

如果你的Google Sheets版本不支持负索引,可以用COUNTA统计筛选结果的行数,再作为索引:

=INDEX(FILTER(D:D, B:B="Sandeep", A:A>=DATE(2016,1,1), A:A<=DATE(2016,11,6)), COUNTA(FILTER(D:D, B:B="Sandeep", A:A>=DATE(2016,1,1), A:A<=DATE(2016,11,6))))

方法3:用XLOOKUP函数(高效简洁)

XLOOKUP是Google Sheets的新函数,功能强大,适合快速实现复杂匹配:

=XLOOKUP(1, (B:B="Sandeep")*(A:A>=DATE(2016,1,1))*(A:A<=DATE(2016,11,6)), D:D, , 0, -1)

逻辑解释:

  • 第二个参数(B:B="Sandeep")*(A:A>=DATE(2016,1,1))*(A:A<=DATE(2016,11,6)):三个条件相乘,只有当所有条件都满足时结果为1
  • 最后一个参数-1表示从后往前搜索,找到的第一个匹配项就是最后一行的记录,直接返回对应的金额

注意事项:

  • 请根据你实际的列位置调整公式中的列标(比如如果日期在C列、金额在E列,就把A改成C、D改成E)
  • 确保日期列是Google Sheets可识别的日期格式,避免筛选出错

内容的提问来源于stack exchange,提问作者Sandeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:29:01