今天咱们说说LAMBDA函数的几个基础用法。

数值累加自定义函数

首先创建自定义名称。依次单击【公式】→【新建名称】命令,打开【新建名称】对话框,新建名称“累加求和”,在【引用位置】编辑框中输入以下公式:
=LAMBDA(n,IF(n=1,1,n+累加求和(n-1)))

任意单元格输入以下公式,即可计算出从1到100的累加结果:
=累加求和(100)

自定义函数“累加求和”不断循环调用自身结果,直到条件n=1时停止调用。其计算过程为:

=累加求和(100)
=100+累加求和(100-1)
=100+99+累加求和(99-1)

……

=100+99+98+……+3+2+累加求和(2-1)
=100+99+98+……+3+2+1

填充内存数组

B列是一些合并单元格,使用以下公式可以创建一个内存数组,将B列的数据填充完整。
=SCAN(“”,B2:B9, LAMBDA(a,b,IF(b=””,a,b)))

SCAN函数用于遍历数组中的每个值,并且能够记录LAMBDA函数运算体每次运算的值,在下一次运算中调用这个值。
本例中,SCAN函数将空文本作为累加器的初始值,B2:B9单元格是要遍历的数组。
第一次遍历时,a为空文本,b为B2单元格的“1005-2”,遍历结束后,IF表达式的结果为“1005-2”。这个结果在第二次遍历时会作为新的a。
第二次遍历,a为“1005-2”,b为B3单元格的空文本,第二次遍历结束后,IF表达式的结果仍然为“1005-2”。该结果在第三次遍历时继续作为新的a。
到第四次遍历时,a为“1005-2”,b为B4单元格的“1006-3”,遍历结束后,IF表达式的结果变成“1006-3”,该结果在第五次遍历时作为新的a……。

逐行计算最大值

如下图所示,是德州亚运会部分铅球选手的成绩表。使用以下公式能够计算出每个人的最好成绩,并返回动态数组。
=BYROW(B2:F8,LAMBDA(x,MAX(x)))

BYROW函数指定对B2:F8单元格区域逐行执行运算,LAMBDA函数的第1参数将每行数据设置为变量x,然后使用MAX函数计算每一行数据的最大值,最终返回内存数组。

逐列计算最大值

以下公式可以计算出各学科的最大值之和。
=SUM(BYCOL(B2:I6,LAMBDA(x,MAX(x))))

BYCOL函数在B2:I6单元格中逐列遍历,LAMBDA将BYCOL函数函数遍历的结果定义为x,再用MAX函数计算出每个x(逐列遍历结果)的最大值。

多重替换

如下图所示,是一些业务员和负责厂家的信息表。其中B列的厂家信息填写不规范,使用了很多简称。希望根据E2:F8单元格区域中的对照表,将这些简称替换为完整的名称。

首先在【公式】选项卡下新建名称“替换”,使用公式为:
=LAMBDA(text,旧字符,新字符,IF(旧字符=””,text,替换(SUBSTITUTE(text,旧字符,新字符),OFFSET(旧字符,1,),OFFSET(新字符,1,))))
C2单元格输入以下公式下拉即可。
=替换(B2,E$2,F$2)

在自定义名称的公式中,为LAMBDA函数指定了三个变量,分别是“text”、“旧字符”和“新字符”。其中“text”表示要进行替换的字符串。

公式先使用SUBSTITUTE函数将“text”中的“旧字符”替换为“新字符”,然后再调用自身的结果继续执行替换。

OFFSET(旧字符,1,)部分和OFFSET(新字符,1,)部分,分别用于指定继续替换的旧字符和新字符,也就是每执行一次替换,替换内容就从上次替换的位置向下偏移一个单元格。

当旧字符为空文本时,表示全部替换完毕,LAMBDA函数停止递归调用,返回多重替换后的字符串。

标签: Excel
点击这里复制本文地址

以上内容由qqso网站教程网整理呈现.
原文地址:LAMBDA函数的几个基础用法,请务必收好发布于2025-08-14 10:10:52。
请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!