LAMBDA函数贤内助SCAN函数会用了吗 如何使用lambda函数( 二 )


SCAN部分作为XLOOKUP函数的查询范围,对B列的数据累加求和 。
SCAN(0,B2:B5,LAMBDA(_a,_b,_a _b))
第1参数是初始值,为0,第2参数是数据源B2:B5,第3参数是LAMBDA表达式 。系统遍历数据源的每一个数据▼

LAMBDA函数贤内助SCAN函数会用了吗 如何使用lambda函数

文章插图
第1次时 , 初始值_a为0,计算元素_b指向B2单元格 , 为2,计算结果是_a _b , 为2,作为新的初始值 。
第2次时,初始值_a为2,计算元素_b指向B3单元格,为3,计算结果是_a _b,为5,作为新的初始值 。
第3次时,初始值_a为5,计算元素_b指向B4单元格,为4,计算结果是_a _b,为9,作为新的初始值 。
第4次时,初始值_a为9 , 计算元素_b指向B5单元格,为2,计算结果是_a _b,为11,作为新的初始值 。
最后返回计算结果组成的内存数组:
LAMBDA函数贤内助SCAN函数会用了吗 如何使用lambda函数

文章插图
XLOOKUP函数查找SEQUENCE函数生成的序列值,查找范围是SCAN函数返回的累加求和的数组,结果范围是A2:A5,查询方式是从后往前找,找下一个较大项 。比如,当寻找1时,匹配大于等于1的最小值2,返回对应的人名看见星光 。
3 连胜次数
如下图所示,是A列各支队伍10轮比赛的情况,需要在L列统计每支队伍最大的连胜次数 。
LAMBDA函数贤内助SCAN函数会用了吗 如何使用lambda函数

文章插图
SCAN函数解法参考如下:
L2单元格输入后向下复制填充:
=MAX(SCAN(0,B2:K2,LAMBDA(_a,_b,IF(_b="胜",_a 1,0))))
SCAN第1参数是初始值,为0,第2参数是数据源B2:K2,第3参数是LAMBDA表达式 。遍历数据源的每一个元素,如果为胜,则累加初始值,否则将初始值归0 。
SCAN函数返回一个内存数组 。例如,二肥队B3:K3返回结果如下:
LAMBDA函数贤内助SCAN函数会用了吗 如何使用lambda函数

文章插图
最后使用MAX函数从中取最大值,也就是相关队伍的最大连胜次数 。
相比于传统的FREQUENCY函数而言 , SCAN的计算过程是不是清晰很多?
最后给大家说一个好消息,在新函数体系里,SCAN函数并不是必须的,大部分时候,它能做到的事情,REDUCE函数都能做到(效率和公式长短有差异) 。然后再给大家说一个坏消息,号称万能函数的REDUCE相比SCAN函数而言,要更……难一些 。
今天给大家分享的内容就这样, 挥挥手 , 咱们明天再见 。
【LAMBDA函数贤内助SCAN函数会用了吗 如何使用lambda函数】 原载公众号:Excel星球
作者:看见星光
,

相关经验推荐