完胜的Scan(Excel函数集团)

Scan看上去简单,就四个字母,其实,嗯,很内涵……

Scan的基础用法就三个参数,好吧,实际应该算是四个参数:

=Scan(初始值,数据源,Lambda(定义名称1,定义名称2,运算))

以上,不算废话的废话,但总归没有具体的示例来得实在,来~上示例!

示例1:数据累乘

 

=SCAN(,A2:A4,LAMBDA(a,b,a*b))

公式中的a、b是自定义的名称

b等同于第二参数,即A2:A4

数据源共3行,公式第一行运算时,a理应是初始值,但公式中第一参数光挂一个逗号,表示不进行任何运算,直接以b的值作为第二行运算时的a

公式第二行运算a*b,结果为6,即第三行运算中的a

类推

示例2:完败的Frequency

返回连续出现最多的次数

 

Scan公式:=MAX(SCAN(0,A$12:A$36,LAMBDA(a,b,IF(b=C13,a+1))))
传统公式:{=MAX(FREQUENCY(IF(A$12:A$36=C13,ROW($1:$25)),IF($A$12:$A$36=C13,,ROW($1:$25))))}

以0为例,前三行数据源满足条件,If的是则结果就是逐个累加,第四行起不满足条件,If的否则结果为False,再有满足条件的数字出现会重新从1开始。整列数中的最大值即连续出现最多的次数。

其他类推

 

示例3:完败的Lookup

带合并单元格的小计

 

Scan公式:=SUM((SCAN(,A$40:A$48,LAMBDA(a,b,IF(b="",a,b)))=D40)*B$40:B$48)
传统公式:=SUM((LOOKUP(ROW($1:$9),ROW($1:$9)/(A$40:A$48>0),A$40:A$48)=D40)*B$40:B$48)

Scan中的判断,当数据源为空时,返回上一个结果,否则返回自身。 

 

示例4:完败的套路

不规则矩阵转一列

 

Scan公式:=XLOOKUP(ROW(1:9),SCAN(,COUNTIF(A51:C54,A51:C51),LAMBDA(a,b,a+b)),A51:C51,,1)
传统公式:{=INDIRECT(TEXT(MOD(SMALL(IF(A$51:C$54>0,ROW($51:$54)*100+COLUMN(A:C)*100001,99^9),ROW(A1)),10^4),"r0c00"),)}

Countif部分计算出“甲”“乙”“丙”各自的数量,即3、4、2

Scan部分对上述三个数累加,即3、7、9

用Xlookup查找1-9九个数字在上述三个数字中分别对应“甲”“乙”“丙”的结果。公式结果的大小与查找值一致,即1列9行;查找方式采用精确匹配或下一较大的项,保证查找值为1、2、3时返回的结果是3对应的“甲”,查找值为4-7时返回的结果是7对应的“乙”,查找值为8和9时返回的结果是9对应的“丙”。

总结:嗯,Scan这函数就是来砸场子的!

相关视频:https://v.douyin.com/BUV8BS2/

以下2023-2-6补充:

这人吧,一不小心掉进字母符号堆里,就不容易爬出来了,这不,邓华同学看了我这篇以后,抛出了个超级砸场子的函数:ToCol

咳咳,Scan砸了那么多函数的场子,这下也轮到他被砸场子了。

=TOCOL(A51:C54,1,1)

 

按你胃,谢谢邓华同学! 

posted @ 2023-02-05 19:25  熬肥妖  阅读(731)  评论(0编辑  收藏  举报