等了很久的两个重量级函数,WPS终于更新了!

在今年春天的时候,就有听到消息WPS会更新LET函数和LAMBDA函数,在24年春节之前,WPS更新了两个重量级函数,为2023年画上一个圆满的句号。

下面带大家来了解两个新函数。

LET函数

官方对函数的说明是,将计算结果分配给名称,可用于通过定义公式内的名称来存储中间计算结果和值,这些名称仅在LET函数作用域内适用。

通过官方对函数的说明描述,我们可以了解到,这个和函数和定义名称相关,我们先简单说下如何定义名称?

单击在【公式】选项卡下【名称管理器】,可以创建名称,将单元格区域、计算公式或值可以指定给一个名称,然后可以在公式中调用。

LET函数可以在不使用名称管理器前提下,就可以实现定义名称的功能(名称仅在LET函数中内部使用),在编写复杂的嵌套公式时,LET可以简化公式,使公式逻辑更加直观,同时还可以成倍的提升计算效率,在调试公式时,通过修改最后一个参数的计算公式,就可以更简便的查看公式每一步的计算结果,下面我们通过几个案例来了解下LET函数的具体使用方法。

LET函数语法如下

LET函数至少需要设置一组名称,最多支持126组名称,定义的名称仅在LET函数最后一个参数中使用,函数参数分两部分,第1部分是名称的定义,每一组名称占用两个参数,依次是名称和名称对应的值,第2部分在最后一个参数中编写计算公式,一个正确的LET公式使用的参数数量一定是奇数。

示例1、计算面积

使用LET依次设置两个名称及对应值,名称1“长”,对应值为B5单元格,名称2“宽”对应值为C5单元格,最后一个参数设置计算公式长乘宽。

示例2、根据期初表、入库表、出库表计算当前库存

使用LET函数依次定义了“期初”、“入库”、“出库”3个名称,每个名称的对应值为SUMIFS函数对指定表求和,最后一个参数设置计算公式为期初加入库减出库,即可在库存表计算每个名称的当前库存。

可以看到,在使用LET函数后,可以直观了解公式计算逻辑,更公式更好维护,以后再以不用担心在写好公式后,时间长了自己都看不懂的困境了。

示例3、计算销售提成1000元以下无提成,1000元以上销售额的10%

用LET定义一个“销售额”的名称,使用SUMIFS函数计算对应姓名的合计金额作为名称值,定义好了名称后,使用IF函数判断如果“销售额”大于1000,销售额乘以0.1(0.1换算成百分比就是10%),计算提成金额,否则返回“无提成。

当公式中需要多次使用一个相同的计算公式时,可以使用LET函数来简化公式,在简化公式的同时还能提升公式计算效率。

这是没有LET函数时的公式:

=IF(

SUMIFS($G$23:$G$28,$F$23:$F$28,B23)>1000,

SUMIFS($G$23:$G$28,$F$23:$F$28,B23)*0.1,

"无提成"

)

这是使用LET函数的公式:

=LET(

销售额,SUMIFS($G$23:$G$28,$F$23:$F$28,B23),

IF(销售额>1000,销售额*0.1,"无提成")

)

公式中需要写两个SUMIFS函数,第1个SUMIFS函数计算结果判断是否大于1000,如果大于1000,第2个SUMIFS再次计算结果后乘0.1,公式中的SUMIFS需要计算两次,在使用LET后,SUMIFS函数只需要计算一次,将计算结果作为“销售额”名称值,然后判断“销售额”即可完成计算。

使用LET函数定义名称需要注意以下事项:

  • 1、在使用LET函数定义多个名称时,多个名称不可以重复。

  • 2、名称不能使用单元格地址,如“A1”、“R1C1”等。

  • 3、名称不能用纯数字或数字开头的字符串。

  • 4、名称长度不能超过255个字符。

  • 5、名称不能使用逻辑值,如TRUE、FALSE等。

  • 6、名称不能包含除汉字、字母、数字、句号、问号、下划线之外的符号。

LAMBDA函数

在没有LAMBDA函数之前,如果需要创建自定义函数,需要使用VBA或JSA来实现编写自定义函数,这让很多没有编程基础的小伙伴无从下手,入门门槛有些高,学习的时间成本也很大,让很多小伙伴放弃了写一个适合自己使用的自定义函数。

现在可以使用LAMBDA函数创建一个函数,这么说可能有些抽象,相信大部分小伙伴都好像懂了,但是好像又没懂,下面我们来具体了解下这个函数,先看下函数的语法,如下图所示。

  • 函数最多支持254个参数,最后一个参数必须是计算公式,所以函数最多支持253个变量。

  • 调用LAMBDA函数传入的参数数量需要和定义的参数数量相同,否则函数返回#VALUE

  • 可以定义多个参数,最后一个参数计算公式中可以不调用,虽逻辑有问题,但不会报错

  • 变量命名需要适合定义名称的命名规范,和LET函数相同,这里就不再重复了。

下面我们使用LAMBDA函数来创建第1个自定义函数。

示例1、创建计算面积的自定义函数

依次设置“长”和“宽”两个变量,最后一个参数设置计算公式设置为“长”乘“宽”,根据函数调试语法,在编写好函数后加一个括号依次传入长宽所对应的单元格,公式即可返回计算后的面积。

测试公式没问题后,单击在【公式】选项卡下【名称管理器】-【新建】创建名称。

名称输入“面积”,引用位置输入LAMBDA公式,点击【确定】即可创建自定义函数。

在单元格使用自定义函数 输入“=面积”,可以看到LAMBDA函数定义的参数名称也可以显示出来。

引用“长”和“宽”所在单元格即可完成公式编写。

示例2、根据分数、性别计算等级,使用LAMBDA函数将嵌套公式创建成自定义函数

正常公式

=LOOKUP(D12,IF(C12="男",$H$13:$H$15,$I$13:$I$15),$J$13:$J$15)

自定义函数

=LAMBDA(

分数,

性别,

LOOKUP(分数,IF(性别="男",$H$13:$H$15,$I$13:$I$15),$J$13:$J$15)

)

使用自定义函数

=计算等级(D12,C12)

示例3、二维表转一维表。

公式1、LAMBDA函数

=LAMBDA(x,

VSTACK(

{"姓名","科目","数据"},

TEXTSPLIT(CONCAT(TOCOL(DROP(CHOOSECOLS(x,1),1)&"-"&DROP(CHOOSEROWS(x,1),,1)&"-"&DROP(x,1,1))&"+"),"-","+",1)

)

)(B2:F8)

公式2、LET函数

=LET(

x,B2:F8,

VSTACK(

{"姓名","科目","数据"},

TEXTSPLIT(CONCAT(TOCOL(DROP(CHOOSECOLS(x,1),1)&"-"&DROP(CHOOSEROWS(x,1),,1)&"-"&DROP(x,1,1))&"+"),"-","+",1)

)

)

使用LAMBDA函数或LET函数都可以实现将复杂嵌套公式“封装”成自定义函数的效果,在创建好公式后,使用时只需要修改变量x的对应引用单元格区域即可。

需要注意的是,CONCAT、TEXTSPLIT这两个文本函数可处理的字符串长度上限是32767个字符,所以当要转换的数据总字符长度超过32767个字符时,此公式会返回错误值#VALUE!。

本示例主要演示使用LAMBDA、LET函数“封装”成自定义函数,所以本次就不提供可以处理更多数据的公式了。

示例4、根据品牌、名称、型号查询对应的售价、物流、成本计算利润。

正常公式,使用三个SUMIFS函数分别计算对售价、物流、成本进行条件求和,然后售价减物流减成本,即可计算出利润。

  1. 正常公式

=SUMIFS(G:G,B:B,I4,C:C,J4,D:D,K4)-

SUMIFS(F:F,B:B,I4,C:C,J4,D:D,K4)-

SUMIFS(E:E,B:B,I4,C:C,J4,D:D,K4)

  1. 使用LET函数分配名称公式,可以更直观看到计算逻辑。

=LET(

售价,SUMIFS(G:G,B:B,I4,C:C,J4,D:D,K4),

物流,SUMIFS(F:F,B:B,I4,C:C,J4,D:D,K4),

成本,SUMIFS(E:E,B:B,I4,C:C,J4,D:D,K4),

售价-物流-成本

)

3、通过观察我们发现,计算售价、物流、成本3个SUMIFS的条件区域和条件是一样的,只有求和区域不同,在这种情况下,还有更简便的方法,可以在LET中使用LAMBDA创建一个自定义函数,然后依次将不同求和单元格区域传入自定义函数中即可。

=LET(

fx,LAMBDA(x,SUMIFS(x,B:B,I4,C:C,J4,D:D,K4)),

fx(G:G)-fx(F:F)-fx(E:E)

)

  1. LET函数分配名称后同时创建自定义函数后调用。

=LET(

售价,G:G,

物流,F:F,

成本,E:E,

fx,LAMBDA(x,SUMIFS(x,B:B,I4,C:C,J4,D:D,K4)),

fx(售价)-fx(物流)-fx(成本)

)

以上4种公式,你更喜欢哪种呢?

通过定义名称使用是LAMBDA函数的一种使用场景,还有另一种使用场景是嵌套MAP、SCAN、REDUCE、BYROW、BYCOL循环类函数使用,由于目前WPS还不支持这些函数,本次就不展开聊了,等WPS更新这些函数后,我们再来具体学习。

当WPS支持这些高级函数后,使函数公式有了处理更复杂需求的能力,同时需要嵌套的函数也会变得更多,相对应的公式也会变得更长,目前在WPS编写公式时,是不支持手动格式化公式的(对公式进行换行和缩进),格式化公式后可以更方便的编写和调试公式,期待WPS将问题优化一下,或者给出一个更好的解决方案。

@金山办公

支持两个新函数的WPS版本号是2023冬季更新 (16250),如下图所示。

由于当前是小范围更新,目前还无法通过官网下载或WPS客户端升级更新,如有想提前体验LET、LAMBDA函数的小伙伴,可以通过以下链接下载。

链接:https://pan.baidu.com/s/1e29PWueKc7fGOW-k7t4VxA?pwd=ua2l 提取码:ua2l

以上就是本次分享的内容。

辽宁省
浏览 2987
16
35
分享
35 +1
25
16 +1
全部评论 25
 
满意
学习学习学习
· 辽宁省
回复
 
誓、⑽恉環扣
· 贵州省
回复
 
答案
厉害
· 浙江省
回复
 
傻傻の莎莎
好专业
· 上海
回复
 
uibpqds
学习
· 河南省
回复
 
苍狼
真好,函数越来越简约易懂化了
· 陕西省
回复
 
好家伙
这教程对小白很友好
· 云南省
回复
 
Bird
明显易懂!!
· 陕西省
回复
 
1231393578237
· 四川省
回复
 
王哪跑
关注了,太棒啦
· 四川省
回复
 
殊泯
打卡
· 湖北省
回复
 
尘梦
认真学习
· 天津
回复
 
王晓奎
打卡
· 山西省
回复
 
廖国钦
打卡学习
· 湖南省
回复
 
Mr Chen
Mr Chen

11月优秀创作者

学习
· 甘肃省
回复
 
YOYO呀
太感谢了
· 江西省
回复
 
亂雲飛渡
很好,还有很多函数等待更新
· 广东省
回复
 
wils
感觉公式变成lisp方言了
· 广东省
回复
 
清华学弟任泽岩
清华学弟任泽岩

2024年03月优秀创作者

本来也想尝试着写攻略的,后来看飞鱼老师写完,我还是收藏好了
· 辽宁省
1
回复
 
清华学弟任泽岩
清华学弟任泽岩

2024年03月优秀创作者

更新太迅速了!学习!
· 辽宁省
1
回复