今天我们来学习下REDUCE函数的使用方法,我愿意称之为LAMBDA函数的最强辅助函数,他可以循环调用参数,累加结果,下面我们来学习下它的使用方法
一、REDUCE
REDUCE:通过将 LAMBDA 应用于每个值,并在累加器中返回总值,将数组减小为累积值。
语法:=REDUCE ([initial_value], array,lambda (x,y,计算表达式) )
第一参数:初始值,
第二参数:要循环的数组
第三参数:lambda,可以接受2个参数
REDUCE是LAMBDA函数的辅助参数,需要配合LAMBDA,上面的介绍相信很多粉丝都看不明白,下面我们通过实际的案例来具体演示下
二、案例演示
如下图,我们想要求这4个数字平方的和,就可以考虑使用下面的公式
公式:=REDUCE(0,B2:B5,LAMBDA(x,y,y*y+x))
参数1:起始值0
参数2:B2:B5,需要循环的区域
参数3:LAMBDA(x,y,y*y+x)
在这里LAMBDA表示式中,X就表示起始值,Y就表示需要循环的区域,函数会将B2:B5逐个代入LAMBDA做计算
当代入数字1,x为0,y为1,1乘1加上0结果为1,LAMBDA会将结果1传回x等待下次计算
当代入数字2,x为1,y为2,2乘2加上1结果为5
当代入数字3,x为5,y为3,3乘3加上5结果为14
当代入数字4,x为14,y为4,4乘4加上16结果为30
以上就是函数的计算过,逐个遍历,将结果累加起来。
三、连接文字
公式:=REDUCE(,B2:B10,LAMBDA(x,y,x&y))
REDUCE函数不仅仅能对数字累加,还能进行文字的连接,如下图,我们就是将几个单元格中的数据连接在了单元格中。
以上就是REDUCE函数的基本用法,下面我们来上点难度,看几个工作中的实际案例
四、批量替换
公式:=REDUCE(C2,{"袋";"kg";"个"},LAMBDA(x,y,SUBSTITUTE(x,y,"")))*1
在这里我们是将单位【袋、kg、个】批量替换为了空值,最后再乘以数字1,将文本数字换换位数字格式的数字方便计算
五、批量指定替换
公式:=REDUCE(C2,F2:F4,LAMBDA(x,y,SUBSTITUTE(x,y,OFFSET(y,,1))))
我们想将中文替换为对应的英文单位,这个公式的逻辑跟案例四是一样的,关键点就是通过OFFSET来做偏移,在这里它的作用是向右移动一行,这样的话就能得到替换值来做替换了
六、同类项拆分
公式:=REDUCE(B4:C4,B5:B7,LAMBDA(x,y,VSTACK(x,IFNA(HSTACK(y,TEXTSPLIT(OFFSET(y,,1),,"、")),y))))
这个公式可以将合并同类项的表格,快速的拆分为这个公式比较的复杂,我们来简单的拆解下
我们需要使用TEXTSPLIT函数根据分隔符拆分
使用HSTACK函数在拆分结果的左侧连接上对应的班级
使用IFNA函数将错位值替换为对应的班级
使用 VSTACK来将表头连接到结果的上面即可
以上就是1行数据的转换方式,最后再使用REDUCE函数来做循环遍历即可,不过我们需要注意的是需要将表头B4:C4作为起始值,这样才能添加上表头
END