首页资讯用SCAN函数玩遍历。直击痛点:手动累加、合并单元格查找。
24天前
SCAN函数是Excel365和WPS表格新增的作为LAMBDA函数的辅助函数,具有遍历数组并生成内存数组的强大能力。它通过逐次扫描数组元素,将每次计算结果传递给下一步运算,最终输出一个包含所有中间结果的数组。
所以学习SCAN函数之前就要先复习LAMBDA函数。
=LAMBDA(变量1, 变量2, …, 计算表达式)
通过输入变量(如x, y),变量的个数不限,需在计算表达式中使用。计算表达式基于参数的运算逻辑(如x+y),返回最终结果。
如果你依然觉得抽象,那么举个简单的例子,创建一个两数相加的自定义函数:
假设我们对两个参数进行赋值:x=1,y=3,这里的(1,3)依次传递给x和y,然后用它们执行x+y,也就是1+3的计算,返回结果4。
LAMBDA函数仅仅是定义了参数和计算,各个参数并没有实际的值,所以单独输入到单元格中并不会返回具体的结果。
所以说LAMBDA函数一定要配合其他的兄弟函数才能实现它的价值,就比如今天我们讲的SCAN遍历函数。
=SCAN(初始值, 数组, LAMBDA(累积值, 当前值, LAMBDA计算逻辑))
LAMBDA计算逻辑:定义每一步的计算逻辑,参数为累积值(x)和当前值(y)。
阅读到这里是不是还是感觉超级抽象,话不多说,我们上例子。
比如B列是每日的销量数据,我们想要在C列计算累计求和值,即1月1日的销量累计值为0+150=150,1月2日的销量累计值为150+120=270,1月3日的销量累计值为270+180=450。
设置变量a为当前累积值,变量b为遍历数组的当前值,用计算式a+b赋予变量意义:即累积值+遍历数组的当前值。
上面说明了LAMBDA函数仅仅是定义了参数和计算,各个参数并没有实际的值,所以输入到单元格中并不会返回具体的结果。
=SCAN(0,B2:B4,LAMBDA(a,b,a+b))
SCAN函数第一参数初始值:0,也就是说起始累加值为0。
1月1日:用起始的累加值0+遍历数组范围B2:B4中的第一个当前值150,即0+150=150。这个150会以数组的形式储存起来传递给下一次运算的起始累加值。
1月2日:用起始的累加值150+遍历数组范围B2:B4中的第二个当前值120,即150+120=270。这个270会以数组的形式储存起来传递给下一次运算的起始累加值。
1月3日:用起始的累加值270+遍历数组范围B2:B4中的第三个当前值180,即270+180=450。这个450会以数组的形式储存起来传递给下一次运算的起始累加值。
最终输出:生成数组溢出结果{150,270,450},动态展示累计结果。
比如H:I列为车间名称与规定产量的对应表。然后通过A列的车间名称将对应的规定产量登记在D列。注意A列含合并单元格,相同车间名称存在于合并单元格中。
定义LAMBDA函数的变量,变量x为初始累积值,变量y为遍历数组的当前值。
如果变量y,即遍历数组的当前值为空值时,返回变量x,即初始累积值,否则返回遍历数组的当前值。
=LAMBDA(x,y,IF(y=””,x,y))
上面说明了LAMBDA函数仅仅是定义了参数和计算,各个参数并没有实际的值,所以输入到单元格中并不会返回具体的结果。
=SCAN(,A2:A6,LAMBDA(x,y,IF(y=””,x,y)))
初始值:省略初始值,默认以数组A2:A6内的第一个元素“1车间”作为起始值累积值。
第1行:如果遍历数组A2:A6中当前单元格(y)为“1车间”,返回当前值(y)“1车间”。以此作为下一次运算时的初始累积值(x)。
第2行:如果遍历数组A2:A6中当前单元格(y)为空值,返回上一步传递下来的累积值(x)“1车间”。以此作为下一次运算时的初始累积值(x)
第3行:如果遍历数组A2:A6中当前单元格(y)为“3车间”,返回当前值(y)“3车间”。以此作为下一次运算时的初始累积值(x)。
第4行:如果遍历数组A2:A6中当前单元格(y)为空值,返回上一步传递下来的累积值(x)“3车间”。以此作为下一次运算时的初始累积值(x)
第5行:如果遍历数组A2:A6中当前单元格(y)为空值,返回上一步传递下来的累积值(x)“3车间”。以此作为下一次运算时的初始累积值(x)
最终输出:生成连续车间数组{“1车间”,”1车间”,”3车间”,”3车间”,”3车间”}作为XLOOKUP的查找依据。
=XLOOKUP(SCAN(,A2:A6,LAMBDA(x,y,IF(y=””,x,y))),H:H,I:I)
用以上数组溢出结果作为XLOOKUP函数的第一参数,在H:H中查找,返回I:I列对应的规定产量。
其实学习Excel,刚开始是挺难的,如果你没有天赋,那就一直重复,当你快到本能反应的时候,你的重复就是别人眼中的天赋,冲破捆绑,展翅翱翔。回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。