excel

关注公众号 jb51net

关闭
软件教程 > 办公软件 > excel >

具有扫描功能的超级函数! excel中函数SCAN新使用指南

脚本之家

今天我们来学习下另一个新函数——SCAN的用法,它跟上一周讲过的REDUCE函数非常的相似,也是LAMBDA的辅助函数,只不过它会将所有遍历的结果都显示出来,而REDUCE只会显示最后的结果。

一、SCAN

SCAN:通过对每个值应用 LAMBDA 来扫描数组,并返回具有每个中间值的数组。

语法:=SCAN ([initial_value],array,lambda (x,y,body) )

它的参数与之前讲的REDUCE函数几乎是一模一样的,但是作用完全不同,SCAN函数会将每个值的结果显示出来,而REDUCE函数它只会输出结果,我们来具体演示下

二、案例演示

公式:=SCAN(0,C2:C5,LAMBDA(x,y,y*y+x))

如下图所示,我们需要对当前的数据求平方和,REDUCE它只会显示最终的结果,而SCAN函数会将每个值得结果都罗列出来,就是说结果个数与第二参数的个数是相等的,来简单的说下计算过程

三、制作阶梯图

公式:=SCAN("",B2:B5,LAMBDA(x,y,REPT("|",y*200)&" "&TEXT(y,"0%")))

SCAN函数会显示每一步的结果,我们就可以考虑使用REPT+竖线来构建一个阶梯图,构建它的前提是,数据要升序排序,并且将文字字体改成Playbill,这个字体会将竖线显示为条形图的样子

REPT("|",y*200),这个函数的作用是将竖线重复显示多次,得到竖线将其显示为条形图的样子,TEXT(y,"0%")用来设置数据格式,将其转换为百分比格式。

四、统计最大连续次数

公式:=MAX(SCAN(0,B2:B15,LAMBDA(x,y,IF(y="胜",x+1,0))))

在这里我们要判断最大的连胜次数,判断它是不是胜利,如果胜利就在当前的结果加1,如果失败了,就返回0,从新开始计算胜利与否

五、合并单元格计算

公式:=VSTACK({"部门","销量"},GROUPBY(SCAN(,A2:A12,LAMBDA(x,y,IF(y<>"",y,x))),C2:C12,SUM,,0))

这个公式的关键点就是SCAN(,A2:A12,LAMBDA(x,y,IF(y<>"",y,x)))

在这里我们将第一参数省略掉,函数就会自动返回第二参数的第一个值,在A2:A12这个区域中第一个值是【销售1部】,之后从第二个元素开始判断Y是否等于空值,条件成立则返回Y否则返回X,这样的话就能将合并单元格拆分开,

随后使用GROUPBY来进行分类汇总,求和就需要设置三参数为SUM,计数则将SUM改成COUNTA

最后使用VSTACK函数在最上方连接上表头,这个就是公式的计算过程

以上就是今天分享的全部内容,相较于REDUCE函数,SCAN的应用应不算广泛,大家了解下即可~

推荐阅读:excel怎么利用SCAN函数在无辅助列情况下处理合并单元格查询难题?