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

用Excel公式获取子集最后项,标记最后购笔客户的所有交易

解决方案:标记最后一次购买为笔(编码333)的客户所有交易

既然你的数据已经按CustomerID和ServiceDate排好序,每个客户的最新交易在其记录组的末尾,那我们可以利用这个排序特性,精准定位每个客户的最后一笔商品编码,再判断是否为333,进而标记该客户的所有交易。

方法1:用LOOKUP函数(兼容多数Excel版本)

假设你的CustomerID在A列,商品编码在D列,要在E列做标记,在E2单元格输入以下公式,然后下拉填充:

=IF(LOOKUP(2,1/(A$2:A$1000=A2),D$2:D$1000)=333,"标记","")

公式解释:

  • A$2:A$1000=A2:生成一个逻辑数组,当前行客户ID匹配的位置返回TRUE,其余为FALSE
  • 1/(...):把TRUE转成1,FALSE转成#DIV/0!错误值
  • LOOKUP(2,1/(...),D$2:D$1000):LOOKUP会忽略错误值,找比2小的最后一个有效值(也就是该客户最后一笔交易对应的位置),返回对应的商品编码
  • 最后判断这个编码是否等于333,是则显示“标记”,否则留空

方法2:用XLOOKUP函数(Excel 365/2021及以上版本)

如果你的Excel支持动态数组函数,XLOOKUP会更直观,同样在E2输入:

=IF(XLOOKUP(A2,A:A,D:D,,0,-1)=333,"标记","")

公式解释:

  • XLOOKUP(A2,A:A,D:D,,0,-1):参数-1表示从后往前查找,直接返回当前客户最后一笔交易的商品编码
  • 后续判断逻辑和方法1一致,简单易懂

关于你提到的COUNTA的补充

你之前用=INDEX(C:C,COUNTA(C:C))能取整列最后值,但这是针对整列的统计。要针对每个客户的子集操作,就需要像上面这样用LOOKUP/XLOOKUP这类能按条件定位组内最后一条记录的函数,而不是整列的COUNTA——毕竟COUNTA没法区分不同客户的记录组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:31:41