初识Excel中的Lambda公式

初识Excel中的Lambda公式

很久没有更新Office软件,目前的够用,就没有足够的动力去用新的版本。听说lambda公式很久之前就引入到了office365中,但一直没有见识过。今天试了一下,发现还是比较简单容易上手的。

以前我们在EXCEL中用公式,一般有这么几类:

  1. EXCEL提供的普通公式。如sum函数,if函数,match函数等,这些公式是最常用的,也是大家最熟知的。这些公式一般都可以组合或嵌套使用,以进一步提升公式的能力。

  2. EXCEL提供的数组公式。它的参数一般是一列或一块数据进行计算,相对复杂一些。有一部分普通公式也支持按数组公式的方式使用。

  3. 自定义的VBA函数或其它语言编写的可供EXCEL调用的函数,称为UDF(User Definded Function), 最常用的当然是EXCEL 自带的VBA编写的函数,此外还可以是其它语言编写的函数,如VSTO中用VB,C#等开发的EXCEL扩展提供的函数。我以前喜欢用VBA给EXCEL写一些自用的公式,后来用xlwings库给EXCEL提供能力扩展时,用Python也写自定义函数,或者用是EXCEL DNA等扩展也可以写C#语言的函数, 都是可以的。自定义函数可以写成支持数组公式方式的,也可以用于递归调用。

    这个Lambda函数与上面的都不太一样,试用下来 ,感觉它更像是自定义公式,通过设定独立的自变量,然后自变量的各种计算得到一个结果,这相当于一个函数。这个函数部分没有写入具体的单元格,因此可以把Lambda公式作为名称存在名称管理器中,起个名字后就当成新的自定义函数来使用。

    举例来说,比如我们定义一个计算两个数的平方和的公式,如果用常规的公式,我们会写成 =(A1^2 + A2^2) (A1,A2表示两个单元格),但用lambda公式来写,就可以写成 =lambda(x,y, x^2 + y^2) (A1,A2),前面的x,y是两个虚拟的变量,后面用x平方和y平方的和来表示要计算的结果,这样就没有写入A1,A2这样的具体参数,而是通过后面括号内的(A1,A2)在实际计算时分别对应赋值给 x和y,进行计算。这样看起来麻烦了一点,但实际上将算法与具体数值分离了,相当于写了一个与具体单元格分离的的函数。

    因此,我们可以在名称管理器中给它起个名字,比如pfh(平方和的首字母),在引用的位置中输入=lambda(x,y, x^2 + y^2) ,注意不包括后面的(A1,A2)这个尾巴。

    保存之后,这个表格文件中我们就可以使用pfh这个新函数了。

对于简单的公式,这样做好处并不大,输入pdf也比普通公式输入=A1^2 + A2^2省不了几个字符。但如果公式特别长而且比较复杂,这样做有几个好处。

  1. 公式比较短,输入快,容易识别。多处套用公式时,不担心公式的内容是否被意外改动。只要公式一长,要分辨不同单元格之中的公式是否一致就是一个挑战。用lambda公式判断起来要简便得多。
  2. lambda公式不用VBA模块,因此即使EXCEL没有VBA模块(很多情景下都不是默认安装的)也可以使用。
  3. lambda公式是可以递归调用的。也就是在lambda公式中嵌入定义的这个lambda公式,虽然好象很酷,但我觉得用到的情景不多。

但是,lambda公式也不是万能的,它的编写基于EXCEL可用的公式,因此它的表达能力远没有VBA那么强,比如我想在LAMBDA中写for循环或While循环,或者是调用其它的模块, 据我所知是不行的。上面提到的 lambda公式的几个好处,基本上VBA定义的公式也都有。

总之,就是这么个东西,有一点惊艳,算是给EXCEL锦上添花吧。

posted @ 2025-05-27 11:10  dingxianghuan  阅读(10)  评论(0)    收藏  举报