excel

关注公众号 jb51net

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

LAMBDA函数连载:excel中BYROW和BYCOL实现函数里的循环

脚本之家

英文单词row和column翻译为行和列,Excel/WPS中也是用它们表示行和列。

函数BYROW=By row,字面意思按行,函数的功能就是按行执行(LAMBDA);

=BYROW (数组, lambda())

函数BYCOL=By Column,字面意思按列,函数功能就是按列执行(LAMBDA)。

=BYCOL (数组, lambda())

注意,它们的第二参数一定是一个LAMBDA函数应用表达式。

这是一个平平无奇的求和公式,对A1:E6求和:

=SUM(A1:E6)

用LAMBDA改进:

=LAMBDA(x,SUM(x))(A1:E6)

LAMBDA定义了一个参数x,定义了一个计算,对x求和,最后将A1:E6传递给x,最终效果就是对A1:E6求和

上述公式的外面包一个BYROW:

=BYROW(A1:E6,LAMBDA(x,SUM(x)))

第一参数A1:E6是要参与运算的数组,第二参数是LAMBDA表达式。

LAMBDA的参数和计算定义不变,A1:E6被传递给x作为SUM的求和对象,不同的是BYROW会让LAMBDA按行执行求和,每行都会产生一个求和结果,最终形成一个数组返回。

改为BYCOL则按列执行求和:

=BYCOL(A1:E6,LAMBDA(x,SUM(x)))

案例:提取平均数据前三名

=TAKE(SORTBY(A2:D8,BYROW(B2:D8,LAMBDA(x,AVERAGE(x))),-1),3)

其中BYROW+LAMBDA+AVERAGE组合部分实现按行统计平均值,返回一个数组作为SORTBY排序的依据,排序后用TAKE提取前三。

案例:合并文本

=TEXTJOIN(CHAR(10),1,BYROW(A2:C8,LAMBDA(x,TEXTJOIN(",",1,x))))

BYROW+LAMBDA+TEXTJOIN部分实现按行合并文本,外层TEXTJOIN在此基础上再次合并,以换行符间隔。

推荐阅读:lambda函数有什么作用? Excel中LAMBDA函数使用详解和相关案例