函数+VBA
函数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在此基础上再次合并,以换行符间隔。
联系客服