等了很久的两个重量级函数,WPS终于更新了!
KVP函数专家、创作者俱乐部成员
在今年春天的时候,就有听到消息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函数分别计算对售价、物流、成本进行条件求和,然后售价减物流减成本,即可计算出利润。
正常公式
=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)
使用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)
)
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
以上就是本次分享的内容。
创作者俱乐部成员
创作者俱乐部成员