来了解一个LAMBDA共生函数:
SCAN函数
这是个非常强大的函数,如果你要做循环累计,这个函数真的非常的好用,
如下图就是本章会要给大家分享的一个核心案例:
一些负责人10天的数值完成目标,
如无崖子需要完成445,后面记载的每一天的数值情况,
需求:算出具体哪一天能够完成目标:
以无崖子为例子,如果做辅助表格:
做一个累计列,2号等于1号+2号,3号等于1+2+3号
最后你发现,目标445,1月7号的时候累计是458达到目标日期.
如果每一个负责人都需要做一个辅助列,那么就会非常麻烦,
这个就是我们这一章所讲到的SCAN函数的使用意义所在,
你可以直接观看下方的视频解析.
该函数WPS和OFFICE新版都可以使用.
文字解析部分:
由于SCAN是LAMBDA的共生函数.
所以这个函数它的公式如下:
SCAN(初始累计值,范围,LAMDA())
看两个简单的案例,来理解一下:
例如下图,做历史周期累计求和,
SCAN(初始值0,整个数值列进行逐行累计,LAMBDA(A,B,A+B))
你可以理解这是个循环累计过程
LAMBDA(累计值,当前值,累计值+当前值)
第一个循环:
累计值0,当前值B2,结果0+134
第二个循环:
累计值134,当前值B3,结果134+156
依此类推.
=SCAN(0,B2:B32,LAMBDA(a,b,a+b))
之前是历史累计,
如果要做年份累计,如下图,累计到年底,到次年重新累计公式应该这么写:
=SCAN(0,B2:B32,LAMBDA(a,b,IF(MONTH(OFFSET(b,,-1))=1,a*0+b,a+b)))
观察一下其中的变化,
譬如到2年交错的位置,
2019/12/1中a=1527,b=195
LAMBDA(a,b,IF(MONTH(OFFSET(b,,-1))=1,a*0+b,a+b))
b对应的是左侧的2019/12/1的MONTH是12
所以依然会执行累计a+b
到了
2020/1/1这一行,a=1722,b=165
b对应的左侧月份是是1月,所以会执行:
a*0+b=0+165
恢复到重新累计.
如果你上述两个例子,通过文字描述可以看懂,
那么起初我们讲的案例就不难理解了.
=IFERROR(INDEX($E$2:$N$2,,MATCH(C3,SCAN(0,E3:N3,LAMBDA(a,b,a+b)))+1),"未完成")