Excel发布LAMBDA功能,实现图灵完备
日前,微软宣布在Excel Insider Beta版本中发布了一项新功能LAMBDA。Excel公式是世界上使用最广泛的编程语言,方便快捷的Excel公式也是大家最常用的功能,但是Excel公式的死的无法自定义。如果能在其基础上进行自主定义和编程是一个很大使用场景,现在这个愿望可以达成了,使用LAMBDA可以基于公式实现可自定义可重用函数的能力。概述
简而言之,LAMBDA允许用户将Excel的公式语言来定义自己的自定义功能。Excel已经允许定义自定义函数,但是只能通过使用完全不同的语言(例如VBA,JavaScript)编写它们。LAMBDA则可以让用户使用Excel自己的公式语言定义自定义函数。还支持在函数中调用其他函数,通过函数调用可以部署的功能不受限制。在很多语言中,有函数式编程的lambda语法,同样的LAMBDA的引入标志着Excel公式语言完成了图灵完备。
使用LAMBDA,可以通过Excel中现有公式,并将其打包为在LAMBDA函数,并重命名命名。然后,就可以在工作表中的任何地方引用该函数,在整个工作表中可以重复使用该自定义函数。
LAMBDA还支持递归。例如,如果创建一个名为MYFUN的LAMBDA,则可以在MYFUN的定义内调用MYFUN。此前,递归功能必须通过脚本来实现。
LAMBDA基础
= LAMBDA包含以下三个关键部分:LAMBDA功能组件,命名lambda和调用lambda函数
LAMBDA功能组件
一个创建基本lambda函数的示例。
假设我们有以下公式:
=LAMBDA(x, x+122)
在公式中, x是调用LAMBDA时可以传递的参数,而x + 122 是逻辑。
例如,假设调用了lambda并为x输入值1,则Excel将执行以下计算:
1 + 122
而1+122=123
命名lambda
如果对LAMBDA命名,就可以实现简单重用,为了达到该目的需要需要使用名称管理器。
可以在功能区中找到"名称管理器",方法是:
公式>名称管理器
调用LAMBDA
简而言之,调用lambda函数的方式与在Excel中调用本机函数的方式相同。
例如对前面的示例,可以直接调用MYLAMBDA :
= MYLAMBDA(122)
返回值:123
最后要注意的一点是,可以在不命名的情况下调用lambda。如果没有命名前面的公式,而只是在网格中编写它,可以如下调用它:
=LAMBDA(x, x+122)(1)
这将为x传递1,并返回123
可重用的自定义功能
在Excel中使用公式的更具挑战性的部分之一是经常会使用相当复杂的公式,这些公式在工作表中多次重复使用(通常仅通过复制/粘贴)。这样会使其他人很难阅读和理解其功能,而且更容易出错,进行故障分析和修复也比较困难。使用LAMBDA,可以重复使用并具有可组合性。
假设有一个序号列表,其中位置编码(双字母)在需要中,需要将该值提取出来: