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

从表格列末尾获取第N项:提取产品最近7条SALE交易

解决方案:提取每个产品最近7条SALE交易

嘿,我来帮你搞定这个需求!先明确下咱们的前提假设(如果和你的实际表结构有出入,调整对应列号就行):

  • 产品列表工作表(就叫Products吧):A列是产品ID/名称,每行对应一个唯一产品
  • 交易工作表(叫Transactions):A列是产品ID/名称,B列是交易类型(SALE/PURCHASE),C列是交易日期(或者交易顺序,毕竟咱们要找最新的,也就是表格末尾的交易),后面列是交易的具体信息(比如数量、金额)

针对Excel 365/2021(支持动态数组)

用FILTER+TAKE+SORT组合就能一步到位。假设你在Products工作表的B2单元格要提取A2对应产品的最近7条SALE交易,直接用这个公式:

=TAKE(SORT(FILTER(Transactions!A:Z, (Transactions!A:A=Products!A2)*(Transactions!B:B="SALE")), 3, FALSE), 7)

给你拆解下逻辑:

  1. FILTER(...):先把交易表里和当前产品匹配、且交易类型是SALE的记录全筛出来
  2. SORT(..., 3, FALSE):按交易日期列(这里假设是第3列C列)降序排序,把最新的交易放到最前面
  3. TAKE(...,7):直接取前7条,这不就是你要的最近7条嘛!

如果你的交易表是按时间顺序新增行的(最新交易永远在最后一行),那连排序都省了,直接取筛选结果的末尾7条就行:

=TAKE(FILTER(Transactions!A:Z, (Transactions!A:A=Products!A2)*(Transactions!B:B="SALE")), -7)

这里的-7就是告诉Excel“从筛选结果的最后面拿7条”,完美命中需求~


针对Google Sheets

逻辑和Excel完全一样,函数写法几乎没差,在Products工作表的B2单元格输入:

=TAKE(SORT(FILTER(Transactions!A:Z, (Transactions!A:A=Products!A2)*(Transactions!B:B="SALE")), 3, FALSE), 7)

要是交易也是按时间顺序加在末尾,同样可以简化成:

=TAKE(FILTER(Transactions!A:Z, (Transactions!A:A=Products!A2)*(Transactions!B:B="SALE")), -7)

几个要注意的小细节

  • 两个表的产品ID/名称得完全匹配!大小写、空格这些细节不能错,不然筛选会漏记录
  • 如果某个产品的SALE交易还不到7条,公式会自动返回所有已有的SALE记录,不会乱报错
  • 要是你的交易日期不在第3列,把SORT里的3改成对应的列号就行
  • 要是用的是旧版Excel(不支持动态数组),可以用INDEX+SMALL组合实现,需要的话我再给你写旧版的公式~

内容的提问来源于stack exchange,提问作者John Mark Caguicla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:21:14