新函数LAMBDA的用法及递归计算实现
Excel出了很多新函数,其中LET、LAMBDA函数使得Excel更加靠近编程语言,我们上一篇简单介绍了LET函数,这一篇我们来看看LAMBDA函数。
编程语言与Excel最大的区别在于,编程语言除了有丰富的函数之外,还可以根据需要自定函数,LAMBDA函数就给Excel带来了自定义函数这个功能。
其实在Excel中自定义函数,可以通过VBA编写,然后以加载项的方式,加载自定义函数,也可以通过名称管理器的方式定义一个名称,然后引用。
最常用的就是宏表函数EVALUATE,大家还有没有印象:
相当于我们定义了一个内置参数的函数ev,把前面单元格中的字符串当作算式计算结果。
今天我们这个LAMBDA函数也有这种用法,我们先从最简单的单元格中直接使用说起:
单元格中使用LAMBDA函数
LAMBDA函数有n个参数构成,看下面的例子:
我们定义了一个函数,参数是x,计算公式是SUM(x),然后我们在结尾输入B2:B11来调用这个函数,得到运行结果。
在LET函数中使用LAMBDA函数
上一篇我们学习了LET函数,知道LET函数能够定义名称:
我们在LET中:
- 定义参数名称 a : a=B2:B11
- 定义函数名称b:b=LAMBDA(x,SUM(x))
- 然后在LET最后调用这个函数b(a)获得计算结果。
在名称管理器中使用LAMBDA函数
我们在名称管理器中添加一个名称ss:
然后我们在单元格中直接调用这个函数,ss(B2:B11)获得计算结果。
以上就是LAMBDA函数的三种基本用法,下面我们再来看看:
LAMBDA函数的递归计算
递归计算,就是我们在函数中调用函数本身的这种计算:
我们用Power Query来做一个示例:
我们知道Power Query中递归调用使用的是@fx,我们定义的这个递归函数,是计算比x到n的和。
递归函数需要一个终止条件,否则会出错,上面这个函数的终止条件就是n=1,大家可以看到函数调用的规律是,x+1,n-1,所以每调用一次,n值就会减掉1,一直减到1结束函数调用,递归函数的本体其实是else后面的部分,就是x+(x+1)
n=10,1+2
n=9,1+2+3
n=8,1+2+3+4
. . . . . .
n=1,1+2+3+…+10
上面就是这个递归函数的计算过程。
那么我们在Excel中如果用LAMBDA函数来实现这个过程呢?
同样的需要在名称管理器中定义递归函数,然后调用这个函数计算:
公式的内容与Power Query中是一样的,只不过语法有点区别。
这个递归公式只能在名称管理中使用,LET函数中会显示名称错误:
好了,以上就是新函数LAMBDA的简单用法。