WPS新增7大动态数组函数,体验如何?

E精精
E精精

WPS函数专家

嗨!大家好,我是小编E精精!

今天我们来分享一下,最近参加金山WPS的内测情报!对经过一段时间的开发,终于放出了最新的一组动态数组操作函数,这些是动态数组的核心函数!下面我们依次来看一下!

一图概述

微软相关函数出来有一阵子,但是由于国内使用WPS的用户还是比较多的,难以推广开,终于WPS也更新了,这对于新函数的推广和普及非常重要!

▼ 一图概揽

函数详解

我们按照顺序,先从简单好用的开始聊!

函数01 | MAP函数

MAP函数,非常简单,就是对指定的单元格区域或者数组中的每一个元素都过一遍我们自己自定义的逻辑处理函数!当然也支持多个数组,这里我们简单演示单参数的处理!

下面这个案例就对1~10中的每个值都*2,然后返回!

=MAP(ROW(1:10),LAMBDA(x,x*2))

当然,你也可以选择单元格区域,看上去更加直观!注意这些函数都是动态数组,也就是公式的结果是一个数组,自动扩展开,不需要下来填充!非常方便!

=MAP(A2:A11,LAMBDA(x,x*2))

下面我们看行列处理函数,大部分情况用于聚合行列,这三个函数每次结算的结果都不允许是数组

函数02 | BYROW/BYCOL函数

BYROW和BYCOL是兄弟函数,他们用法完全一样,只是一个按行处理,一个按列处理!

下面案例的需求是找出每个人的最高销售额,也就是逐行处理,找到其中的最大值,写法如下!

=BYROW(B2:G9,LAMBDA(x,MAX(x)))

当然,WPS目前也是支持ETA规约写法,至于是什么不重要,可以理解为一种语法糖!不需要其他处理,如果是和前面参数对应的函数,都可以简写!

=BYROW(B2:G9,MAX)

在没有新函数的过去,处理这个问题,有点麻烦!需要你有一定的数组构建经验!

=SUBTOTAL(4,OFFSET(B1:G1,ROW(1:8),))

BYCOL函数,我们不再举例,你上面换一下,就变成按月维度,找出当月最高的销售额!

=BYCOL(B2:G9,MAX)

上面只是演示了聚合函数MAX,其他SUM、MIN等结果为单值的函数都可以调用处理!

函数03 | MAKEARRAY函数

MAKEARRAY函数看名字大概就知道是干什么用的,制造函数!

比较典型的案例就是乘法口诀表了!

第一和第二参数,分别表示行列要循环的次数!下面的判断条件是r>=c表示只有行大于等于列才计算,否则返回空!结果是一个r * c的数组!

=MAKEARRAY(9,9,LAMBDA(r,c,IF(r>=c,c&"×"&r&"="&r*c,"")))

▼ 系统教程案例节选

下面这个小区单元生成案例更加直观!

=MAKEARRAY(3,4,LAMBDA(r,c,INDEX(A:A,r+1)&"-"&INDEX(B:B,c+1)))

可以配合TOCOL函数,转成一列,有点笛卡尔积的意思了!

这个案例简单,后面我们还有更多案例讲解!

中间,我们插一下,比较简单的,ISOMITTED函数,判断LAMBDA自定义函数,参数是否缺失的!

函数04 | ISOMITTED函数

如下面案例,我们用LAMBDA自定义了一个相加函数,但是如果用户没有输入y参数,直接填写逗号,那么默认就是10,否则按照y参数实际值计算!

你是不是想问,不写逗号行不行,我预判了……

答案是不行!

最后两个是重头戏函数,REDUCE可以说是动态数组的灵活函数,是动态数组的灵魂!我们把他和SCAN对比一起学习,因为他们有相似也有不同之处!

函数05 | SCAN和REDUCE函数

REDUCE和SCAN都有两个对应的处理参数,分别对应第一参数的初始值和第二参数中需要遍历处理的内容,不同的是REDUCE把每次计算结果,作为下一次的初始值,循环累积,SCAN会把每次的处理结果都保留下来,继续累积!

下面我们看一个简单案例对比一下!除了函数名称不同,剩下的参数写法基本完全一样,但是他们的结果区别很大!

1、REDUCE处理结果是一个单值,相当于累加,每次计算的结果都是下一次的x

2、SCAN函数按逻辑也是没加,只是ta每计算一次,都会出一个结果,最后的结果和原数组尺寸一致!

篇幅关系,以上只是这两个函数的入门演示说明,更多案例可以阅读之前OFFICE推出写的系统文章!非常详细且案例较多,分析透彻!

往期推荐

Excel新增函数SCAN的魅力!

REDUCE函数,函数版FOR循环!

WPS这些新函数目前还在小范围内测,测试中也发现了一些问题,比如参数单元格引用丢失等问题,相信修复BUG后不久将全面上线,期待吧!上线后,很多日常需要VBA处理的难题,函数也可以轻松处理了!可以称作为函数式编程

▼系列教程-图文+视频+交流群

投票你了解动态数组函数吗?(4选1)
  • 不知道 16
  • 看到别人用过,自己没体验过 7
  • 使用过,不太会 8
  • 非常好用,一生推 13
44人参与 投票已截止
江苏省
浏览 5080
16
39
分享
39 +1
47
16 +1
全部评论 47
 
Herff
mac动态溢出还是不能用,拜托在线智能文档和windows保持同频更新好吧!!
· 上海
回复
E精精
E精精

WPS函数专家

win+本地 最靠前 mac 应该更新最靠后的,用户基数小~
· 江苏省
回复
 
80年
啥时候发布呀
· 山东省
回复
 
附近有啥好吃的吗
已阅,在我收藏夹里待着吧
· 湖南省
回复
E精精
E精精

WPS函数专家

总结:吃灰~
· 江苏省
回复
 
qdl
BYROW(B2:G9,MAX) 这个用法我正巧之前在excel上试了下,发现还不行,没想到wps已经支持了
· 安徽省
回复
qdl
试了下,正式版excel还不支持这种用法,测试版已经支持了
· 安徽省
回复
 
小墨
· 广东省
回复
 
1231393578237
· 四川省
回复
 
周
· 湖北省
回复
 
亿婴师山水店慧慧
· 浙江省
回复
 
Dream0846
🐮
· 河北
回复
 
张棠舟
哇哦
· 北京
回复
 
水墨染青花
· 四川省
回复
 
阿拉星星
打卡
· 山东省
回复
 
风中之烛小小火
· 广东省
回复
 
苏苏
函数用不了
· 浙江省
回复
E精精
E精精

WPS函数专家

在内测,再等等!
· 江苏省
回复
 
懒得批爆
懒得批爆

创作者俱乐部成员

赶紧的,Mac版一个都没有, 真是的! 发个帖也不说适用于什么系统什么版本。 现在提问题的都知道先说,是什么操作系统,WPS版本号是多少, 为啥这俱乐部成员发帖都不先说说是什么操作系统,WPS版本号是多来来着!
· 四川省
回复
欧阳钦云
欧阳钦云

@金山办公

懒老师好,部分目前还不支持MAC实在抱歉
· 广东省
回复
 
有尾的无尾熊
打卡
· 广东省
回复
 
亂雲飛渡
· 广东省
回复
 
leejun
=DROP(REDUCE("",FILTER(A:A,A:A<>""),LAMBDA(X,Y,VSTACK(X,TEXTSPLIT(Y,{","},,1)))),1) 我用365试了下,这样就可以拆分数组了,以前需要合并在拆,但是如果合并的字符超过36000多了后就报错,用这函数再多也不会报错了
· 美国
回复
E精精
E精精

WPS函数专家

· 江苏省
回复
 
龙在天
打卡, 赶紧出新函数
· 江苏省
回复
E精精
E精精

WPS函数专家

迫不及待了吧
· 江苏省
回复
 
郭卫
一直在不断学习,期待
· 中国
回复