工作中需要按客户进行管理跟进金额,数据是信息化系统导出,加上手动备注的一些标记状态(如下图所示),现在问题是需要找出每个项目状态中包含Y的最后一个出现的对应金额。手动模拟运算的结果如填充颜色为黄色的区域汇。

高版本解决方案
返回指定条件就是筛选,所以这里先用上筛选函数,这个函数单条件是这样写的:
“ Filter函数:(筛选的数据,筛选条件,)”
很明显这里不适合单条件筛选,需要多条件筛选,条件一是客户、条件二是状态;所以需要知道多条件筛选函数的固定写法:
并:“ Filter函数:(筛选的数据,(筛选条件1)*(筛选条件2))”
或:“ Filter函数:(筛选的数据,(筛选条件1)+(筛选条件2))”
有多少个条件就乘多少个条件。其中乘号代表的是并(AND),加号代表的是或者(OR)
录入函数:
=FILTER($C$3:$C$18,($D$3:$D$18="Y")*($B$3:$B$18=F8))

就得到了客户ARC 并且状态为Y的所有金额的结果,如下图所示
到了这一步就比较明朗了,只需要保留最后一个结题就可以了,配合TAKE函数就可以了,TAKE函数在这样需要保留指定行列的场景是最好使用的。需要保留多少行就录入对应的数字。数字大于0,从顶部开始保留,数字小于0,从底部开始,把公式变更为后向下填充就把问题解决了:
=TAKE(FILTER($C$3:$C$17,($D$3:$D$17="Y")*($B$3:$B$17=F8)),-1)

因为源数据是每天要更新的,为了配合成全动态数组键一键分析,把公式更改为:
=VSTACK(B2:C2,LET(A,DROP(UNIQUE(B3:B10000),-1),HSTACK(A,DROP(REDUCE("",A,LAMBDA(X,Y,VSTACK(X,TAKE(FILTER(C3:C1000,(D3:D1000="Y")*(B3:B1000=Y),0),-1)))),1)))) 这个公式实现了一键填充,算法逻辑没问题后,不用管了,只需要更新源数据了,效果如下图:

低版本解决方案
代版本的方案也有,因为函数比较复杂,所以不再说明如何实现,只提供方法,需要按数组三键返回结果(Ctrl+Shift+回车)
录入公式:
公式1
=INDEX($B$2:$B$17,MATCH(,COUNTIF(F$6:F7,B$2:B$17),))
公式2
=LOOKUP(1,0/((D:D="Y")*(B:B=F7)),C:C)

其中LOOKUP 是万金油公式,在低版本中可以替代筛选函数,原理和筛选函数中多条件非常相似,注意乘号就能够理解了。

我是古哥: