打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
介绍新LAMBDA函数
hercules028
>《excel》
2023.01.29 四川
关注
新的
LAMBDA
函数有助于创作可重复使用的
LAMBDA
函数,同时其本身也是独立的函数。
LAMBDA
作为参数
Excel
公式语言的一个令人兴奋的补充是,
LAMBDA
现在通过添加新函数,展示了被视为可接受的值类型的能力。这是一个在许多编程语言中都存在的重要概念,一般来说,这等同于
lambda
函数的概念。
Lambdas
作为值
在深入研究新函数及其工作方式之前,了解函数作为值的概念很重要。
在过去几年中,我们一直在教
Excel
如何理解新的值类型。最近添加的一些是数据类型(
Wolfram
、
Geography
、
Stocks
、
Power BI
,甚至
Power Query
都可以创建数据类型)和动态数组。
Lambdas
通过允许
Excel
将函数理解为值来继续扩展。这是通过引入
LAMBDA
实现的。这意味着以前几乎不可能或艰巨的事情现在可以通过编写
LAMBDA
并将其作为值传递给函数来实现。
例如,假设有一个不断增长的值列表,检查大于
50
但小于
80
的值,生成一个布尔值列表,如下图
1
所示。
图
1
可以为每个值编写一个函数来检查条件,但这很容易出错,并且需要为一些非常基本的内容进行大量复制。作为参考,重复的公式可能如下(每个值有一个公式):
=AND(B3>50, B3<80)
=AND(B4>50, B4<80)
...
这是一种可以应用
LAMBDA
的场景,更具体地说,这是一个使用新
MAP
函数的绝佳示例。
MAP
使用
MAP
,可以轻松地创建
LAMBDA
,它将公式应用于每个值并返回结果。
MAP
的超能力是值转换。
公式如下:
=MAP(
表
1[
值
],LAMBDA(value, AND(value>G3,value<G4)))
结果是一组布尔值,如下图
2
所示。
图
2
只需一个公式,就可以实现相当强大的功能!
该函数如何工作
新的
MAP
函数接受一个(或多个)数组
/
区域引用,并将提供的数组
/
区域中的每个值作为参数传递给
LAMBDA
函数(在本例中为表
1[
值
]
)。
LAMBDA
接受来自
MAP
的参数这一事实是在检查每个新函数时需要记住的一个重要概念,因为每个新函数都不同。
在上面的例子中,有一个数组,因此
LAMBDA
非常简单,只需要一个参数。
集中于
LAMBDA
本身,可以看到,在这个示例中,选择将单个参数称为
“value”
,但可以使用任何合法参数名称来调用它:
LAMBDA(value, AND(value>F2, value<F3))
使用这些新函数,需要理解的另一个关键概念是,
Excel
将对提供的每个值进行计算,然后让
LAMBDA
完成繁重的工作。在这种特殊情况下,它将返回一个结果数组,但这里介绍的其他函数将只返回一个值。
REDUCE
虽然
MAP
被证明对转换值列表很有用,但假设想计算满足条件的项数。
这就是
REDUCE
派上用场的地方。
这一次,重复使用与之前相同的逻辑,但将计算包装在
IF
中进行计数。与之前一样,公式非常简单,因为只需要一个函数调用:
=REDUCE(0,
表
1[
值
],LAMBDA(accumulator,value,IF(AND(value>G3,value<G4),1+accumulator,accumulator)))
结果如下图
3
所示。
图
3
通过使用
LAMBDA
将值列表缩减为一个值。
与
REDUCE
的主要区别在于,它在
LAMBDA
值中使用了两个参数:
accumulator
:
REDUCE
和每个
LAMBDA
调用返回的初始值。
value
:提供的数组中的值
另一个需要注意的是第一个参数,它是
accumulator
的
[initial value]
。在例子中,指定为
0
。
accumulator
允许编写自己的自定义聚合
IF
函数(甚至可以使用
REDUCE
编写
PRODUCTIF
),如果集中于
LAMBDA
的计算部分,可以看到:
IF(AND(value>G3,value<G4),1+accumulator,accumulator)
BYROW
和
BYCOL
接下来要介绍的两个函数是
BYROW
和
BYCOL
。这些函数接受一个数组或区域,调用
lambda
,并将所有数据按每行或列分组,然后返回一组单个值。
这两个函数很好,因为它们允许进行以前不可能的计算,它们会产生数组。
例如,假设有一些追踪一周中每一天的温度数据,想要看到一周平均气温高于
85
华氏度的日子。如下图
4
所示。
图
4
如果没有
BYROW
,将需要创建一个辅助列,并使用一组公式计算平均值,然后可能使用筛选或其他一些功能。
使用
BYROW
,可以创建一个满足约束条件的
LAMBDA
,然后将结果传递给
FILTER
函数。
公式如下:
=FILTER(
表
2, BYROW(
表
2,LAMBDA(week, AVERAGE(week)>85)))
结果如下图
5
所示。
图
5
现在,假设希望看到以摄氏度为单位的数据。可以通过使用
MAP
和
CONVERT
来包装我们的调用,以摄氏度为单位进行快速更新并获得结果:
=MAP(FILTER(
表
2, BYROW(
表
2, LAMBDA(week, AVERAGE(week)>85))), LAMBDA(value, IF(ISNUMBER(value), CONVERT(value, 'F', 'C'), value)))
结果如下图
6
所示。
图
6
完整的函数列表
下面是
LAMBDA
新函数。
MAP
函数,通过应用
lambda
创建新值,将数组中的每个值
“
映射
”
到新值,返回一个数组。参数
array1
,要映射的数组;参数
lambda_or_array
,
LAMBDA
,必须是最后一个参数,并且必须为传递的每个数组或要映射的另一个数组指定一个参数。
LAMBDA
参数,
array1
:从
array1
中的值,
array2
:从添加数组中的值
……
。
REDUCE
函数,通过对每个值应用
LAMBDA
函数并在累加器中返回总值,将数组缩减为累加值。参数
initial_value
,为累加器设置开始值;参数
array
,要缩减的数组;参数
lambda
:被调用以缩减数组的
LAMBDA
,该
LAMBDA
接受两个参数,累加器和值。
LAMBDA
参数,
accumulator
:从
LAMBDA
中返回的值;
value
:从数组中的值。
SCAN
函数,通过对每个值应用
LAMBDA
扫描数组,并返回具有每个中间值的数组。参数
initial_value
:为累加器设置开始值;参数
array
:用于扫描的数组;参数
lambda
:被调用来扫描数组的
LAMBDA
。
LAMBDA
接受两个参数,累加器和值。
LAMBDA
参数,
accumulator
:从
LAMBDA
中返回的值;
value
:从数组中的值。
MAKEARRAY
函数,通过应用
LAMBDA
函数,返回指定行和列大小的计算数组。参数
rows
:数组的行数,必须大于
0
;参数
cols
:数组的列数,必须大于
0
;参数
lambda
:被调用以创建数组的
LAMBDA
,该
LAMBDA
接受两个参数,
row_index
和
column_index
。
LAMBDA
参数,
row_index
:行的索引;
column_index
:列的索引。
BYROW
函数,将
LAMBDA
应用于每一行并返回结果数组。参数
array
,按行分隔的数组;参数
lambda
,一种将一行作为一个参数并计算一个结果的
LAMBDA
。
LAMBDA
参数,
value
:从数组中的值。
BYCOL
函数,将
LAMBDA
应用于每一列并返回结果数组。参数
array
,按列分隔的数组;参数
lambda
,一种将列作为单个参数并计算一个结果的
LAMBDA
。
LAMBDA
参数,
value
:从数组中的值。
ISOMITTED
函数,检查值是否丢失,并返回
TRUE
或
FALSE
。参数
argument
,想要测试的值,例如
LAMBDA
参数。
可选参数
LAMBDA
现在支持可选参数。要使用可选参数,只需将可选参数名称放置在
“[]”
中即可。例如:
=LAMBDA(param1, [param2], IF(ISOMITTED(param2), param1, param2))
如果省略
param2
,则此
lambda
将返回
param1
的值,否则返回
param2
的值。
注:本文学习整理自微软官方网站,供参考。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
【BYROW函数】对数组的每行运算,并返回结果数组。
67这才是Excel有史以来最复杂也是最强大的函数,没有之一!
MAP函数用过没?
另一个视角看Excel中的MAP/REDUCE/SCAN等函数:详说Excel函数式编程中的循环控制结构
扒出一个Excel神技巧:按指定的条件重复数据!
Vlookup函数实例(全)
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×