在Excel函数中,SCAN函数是LAMBDA的重要辅助工具,SCAN函数核心功能是对数组进行循环计算并返回每一步的中间结果。这一特性使其与REDUCE函数形成鲜明对比——REDUCE仅输出最终结果,而SCAN函数会完整呈现所有计算过程的结果。​

一、SCAN函数解析​

SCAN函数的语法为:​

=SCAN([initial_value],array,LAMBDA(x,y,body))​

参数1(初始值):循环计算的起始数值,若省略则默认以数组第一个元素作为初始值。​

参数2(数组区域):需要进行循环处理的数据范围。​

参数3(LAMBDA表达式):定义计算逻辑,其中x代表上一步的结果,y代表当前循环的元素,body为具体计算式。​

尽管参数与REDUCE函数高度一致,但两者的输出形式截然不同。​

二、实战案例:SCAN函数的具体应用​

案例1:累计平方和计算

公式:=SCAN(0,A2:A5,LAMBDA(x,y,y*y+x))​

初始值为0,数组区域为A2:A5(含1、2、3、4),计算逻辑为“当前元素平方+上一步结果”。

计算过程:​

第一步:x=0,y=1→1²+0=1(结果存入x,用于下一步);​

第二步:x=1,y=2→2²+1=5;​

第三步:x=5,y=3→3²+5=14;​

第四步:x=14,y=4→4²+14=30。​

输出结果:{1,5,14,30},与数组元素数量一致,清晰呈现每一步累计平方和。

SCAN函数实用技巧:4个经典案例助你快速掌握-趣帮office教程网

案例2:用SCAN制作阶梯图​

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

适用场景:直观展示数据递增趋势(需确保数据已升序排序)。​

原理:通过REPT函数重复“|”生成竖线,乘以200是为了调整长度;TEXT函数将数值转为百分比格式。​

注意:将字体设置为“Playbill”,竖线会显示为条形图样式,阶梯效果更明显。​

案例3:统计最大连续次数(如连胜次数)

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

逻辑:若当前元素为“胜”,则在上一步结果基础上加1;否则重置为0。​

SCAN输出每一步的连续次数,外层嵌套MAX即可提取最大值,快速得到最长连胜记录。​

案例4:合并单元格的分类汇总​

公式:

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

关键步骤:SCAN函数通过IF(y<>"",y,x)填充空白单元格——遇到非空值则更新为当前值,否则沿用前一个值,实现合并单元格的拆分。​

后续用GROUPBY按部门汇总销量,VSTACK添加表头,高效完成分类计算。​

三、总结:SCAN函数的核心价值​

SCAN函数虽不如REDUCE常用,但其保留中间结果的特性,在数据追踪、趋势可视化、分步计算等场景中独具优势。通过与LAMBDA、REPT、GROUPBY等函数组合,能大幅提升Excel数据处理的灵活性。想要提升Excel技能,掌握SCAN函数是不可或缺的一步。