前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

公式生成器-lambda函数

大多数情况下,我们编写的公式也好,函数也好,基本上是有针对性的。仅对编写该公式时的实际数据有效。如果数据有变或者表的结构有变化,我们的公式就要发生改变。今天我们来学习一下lambda函数,这个函数能让你的公式变得“更具有适应能力”,当数据表的结构发生变化时,也能从容应对。

我们先看看LAMBDA函数是个啥:

关于lambda函数

1、版本要求

MS Excel:“Microsoft 365 专属 Excel Microsoft 365 Mac 版专属 Excel Excel 网页版”

WPS Excel:“没有介绍,但应该是最新版本才能用”

2、作用

使用 LAMBDA 函数创建可重用的自定义函数,并使用易记名称调用它们。 新函数在整个工作簿中可用,其调用类似本机 Excel 函数——这段话微软官方的原话。

3、语法

=LAMBDA([parameter1, parameter2, …,] calculation)    

参数

说明

[parameter1, parameter2, …,]

要传递给函数的值,例如单元格引用、字符串或数字。 最多可以输入 253 个参数。 此参数可选。

calculation

要作为函数结果执行并返回的公式。 其必须为最后一个参数,且必须返回结果。 此参数是必需项。

注意事项:

1、Lambda 名称和参数遵循名称的 Excel 语法规则,但有一个例外: 参数名称中 不使用句号(.)。

2、请确保创建 LAMBDA 函数时遵循最佳做法,就像使用任何本机 Excel 公式一样,例如传递正确的参数数目和类型、匹配左括号和右括号,以及将数字输入为未格式化数字。 此外,使用 Evaluate 命令时,Excel 会立即返回 LAMBDA 函数的结果,你无法单步执行该函数。

3、如果输入的参数超过 253 个,则 Excel 会返回 #VALUE! 错误。

4、如果传递给 LAMBDA 函数的参数数目错误,则 Excel 会返回 #VALUE! 错误。

5、如果从自身内部调用 LAMBDA 函数,且调用为循环调用,则 Excel 会返回 #NUM! 如果递归调用过多,则为错误。

6、如果在单元格中创建 LAMBDA 函数但未同时从单元格内调用该函数,则 Excel 会返回 #CALC! 错误。

使用演示

上面关于lambda函数的功能、语法、注意事项等等:用一句话来说就是,我们可以用这个函数来自定义一个全工作簿可以调用的函数了。

演示目标:编写一个可以在工作簿内随时调用的支持通配符的查找公式。

分析:

1、可以实现查找的函数有lookup系列函数,还有filter函数。lookup系列函数的缺点在于我们不能输入一个查找条件,它将所有符合的结果都给列出来。那么,我们这里就选择用filter函数作为主要函数了。

2、又要求可以在工作簿里随时调用:那么得把我们编写的这个公式定义成一个名称,而我们能定义名称的地方只有名称管理器。我们的目标是编写一个查找公式,那我们就把我们要编的公式取个名称,就叫“查找公式”吧。

3、我们知道filter函数是不支持通配符的,如果要实现通配符,就只能与search(或find)配合。

4、既然我们的“查找公式”能被随时调用,我们还得用上用上今天要讲的这个Lambda函数。

5、如果不用lambda函数,我们这个纯用filter函数实现通配符查找的公式应该是这样的:

filter(返回数组,iferror(search(查找值,值所在数组)>0,false),"无结果")

上面的这条公式就是我们能实现通配符查找的filter公式了。

如何才能让上面的这条公式与lambda函数“勾搭”上呢?

我们先看看下面这张截图:

也就是第一个参数我们输入之后,可以接着输入第二个参数,第三个参数,…,最后的一个计算式子。就像设未知数那样,把第一个参数定为x,第二个参数定为y,第三个参数定为z,后面的计算式子就变成filter(x,iferror(search(y,z)>0,false),"无结果")

应该最后是这个样子了:

lambda(x,y,z,filter(x,iferror(search(y,z)>0,false),"无结果"))

怎么样,是不是很精奇?是不是有种陌生的熟悉感,可就是有点绕?

LAMBDA的作用就是给你的公式放若干个变量进去,让你的公式看起来没有错误,在正确传入相应的参数之后,就能按你原定计划执行。这就是我对lambda这个函数的理解。

言归正传,现在开始我们的演示操作了。

第一步:先在名称管理器上定义我们前面约定的名称:“查找公式”,并且在引用那里填入lambda(x,y,z,filter(x,iferror(search(y,z)>0,false),"无结果"))

点击“确定”之后的效果如下图:

第二步:准备至少两组不同的数据,用于测试我们的这个查找公式是否是“万能”的。

小编这里准备了两组根本不搭边的数据:

演示1:根据学生姓名查找学生的所有成绩

演示2:根据学生序号,查找学生所有成绩

演示3:根据单位名称查找员工

演示4:根据员工姓名查找相关该员工的信息

经过上面的四个演示,分别对查找的条件进行了更改,对查找的数据源进行了更换,但是查找公式没有变,发现这个查找公式在当前工作簿,已经做到随时随地调用了,不受数据源的影响

但是在演示过程中,还是有一些小小的瑕疵,需要对公式再进行一下润色:

1、在未输入任何内容的时候,不任何数据。

2、对相关参数提供一点提示:让调用的人知道,x是需要什么样的内容、y需要哪些内容、z需要什么内容。

经过优化:

1、对输入值进行了判断,如果是空值,则不显示任何内容

2、将参数改成中文,让调用的人哪怕过了很长时间也知道怎么使用。

3、优化后的效果

=LAMBDA(返回值区域,查找值,查找区域,FILTER(返回值区域,IFERROR(SEARCH(IF(ISBLANK(查找值),"None",查找值),查找区域)>0,FALSE),"无结果"))


怎么样?大家学会了吗?要掌握好Lambda函数,还需要多多练习!大家快快动手练练吧

日拱一卒,功不唐捐。关注我,持续进步。

#头条首发大赛#

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言