wps新增的11个新函数,你用了么

探索三千春色 2024-02-20 19:01:30

新增的11个函数如下图所示。

WPS已支持动态数组功能,一些新函数自身已经可以返回数组结果了,如果需要对函数返回的数组结果进行二次计算,就需要使用数组函数来处理了,WPS本次更新了11个数组函数,可以对数组进行合并、提取、转换、删除等操作,其强大的功能将为你带来意想不到的惊喜。

下面我们来具体看下每个函数的使用场景。

VSTACK(垂直拼接数组 行向下)

示例1、多表查询

=VLOOKUP(B5:B7,VSTACK(E5:F11,H5:I11),2,0)

在没有VSTACK函数之前,对多表查询需要使用IFERROR函数多层嵌套,使用VSTACK函数可以将多个单元格区域或数组依次向下拼接成一个数组,作为VLOOKUP函数第2个参数。

示例2、多表去重复

=UNIQUE(VSTACK(E16:E22,H16:H22))

使用VSTACK函数可将多个不相连的单元格区域拼接成一个数组,然后使用UNIQUE函数去重复。

示例3、多表汇总

=FILTER(VSTACK(表1:表3!A2:C1000),CHOOSECOLS(VSTACK(表1:表3!A2:C1000),3)<>"")

使用VSTACK函数可以将连续的多个工作表组的指定单元格拼接,多个工作表行数不同时,可以引用相对较大的区域,拼接后使用FILTER函数将非空的数据筛选出来。

HSTACK(水平拼接数组 列向右)

示例、一条公式汇总

=HSTACK(UNIQUE(E5:E11),SUMIFS(F5:F11,E5:E11,UNIQUE(E5:E11)))

HSTACK函数可能横向的依次向右拼接数组,可以将多列公式合并成一条公式。

TOROW(将数据转换为一行)

示例、查询组别后将多行多列转为一行

=TOROW(FILTER($J$5:$K$12,$I$5:$I$12=B5),1)

使用FILTER函数查询后返回多行多列数据,使用TOROW函数将多列数据转为一行。

TOCOL(将数据转换为一列)

示例1、多列去重复

=UNIQUE(TOCOL(D5:G9))

使用TOCOL函数将多行多列数据转换成一列后,使用UNIQUE函数去重。

示例2、生成所有组合

=TOCOL(TOCOL(TOCOL(D15:D19,1)&"-"&TOROW(E15:E19,1))&"-"&TOROW(F15:F19,1))

考虑到函数的通用性,引用一个相对大一些的单元格区域,使用TOCOL函数,通过设置TOCOL函数的第2个参数为1,忽略空值,可以将空值过滤掉,可以返回所有名称,使用TOCOL函数将规格转成一列,使用“&”运算符连接后可以返回一个多行多列的连接了名称和规格的数组,使用TOCOL函数将多行多列转换成一列,再使用相同方法连接型号后转换。

WRAPROWS(将一维数组按行转化为二维数组)

示例、将一列数据转换为多行(按行转换)

=WRAPROWS(G5:G17,3,"")

使用WRAPROWS函数可以多一行或一列的数据按行转换成多行,函数第2个参数可以设置转换后的列数,也可以理解为转换时每N列后换行。

WRAPCOLS(将一维数组按列转化为二维数组)

示例、将一列数据转换为多行(按列转换)

=WRAPCOLS(G5:G17,5,"")

使用WRAPROWS函数可以多一行或一列的数据按列转换成多列,函数第2个参数可以设置转换后的行数,也可以理解为转换时每N行后换列。

CHOOSEROWS(返回数组或引用中的行)

=CHOOSEROWS(B5:F9,--TEXTSPLIT(CONCAT(REPT(SEQUENCE(5)&"-",G5:G9)),"-",,1))

使用--TEXTSPLIT(CONCAT(REPT(SEQUENCE(5)&"-",G5:G9)),"-",,1)可以根据每行数量,返回对应数量重复N次的行号,使用CHOOSEROWS函数可以返回对应行数的数据。

CHOOSECOLS(返回数组或引用中的列)

=CHOOSECOLS(F5:J11,1,4,5)

使用CHOOSECOLS函数可以返回引用区域或数据的指定一列或多列。

TAKE(从数组开头或结尾返回行或列)

示例、随机抽奖,抽3名不重复的姓名

=TAKE(SORTBY(F5:H11,RANDARRAY(7)),3)

使用SORTBY和RANDARRAY函数对数据源随机排序,然后使用TAKE函数返回前3行的数据,即可实现随机抽取3行不重复数据。

DROP(从数组开头或结尾删除行或列)

示例、金额降序排序后,删除倒数第3以后的行数,如有倒数第3的金额重复的也一同删除

=DROP(SORT(F5:H11,3,-1),-COUNTIFS(H5:H11,"<="&SMALL(H5:H11,3)))

使用SORT函数对源数据进行降序排序,使用SMALL函数计算第3最小值,然后使用COUNTIF函数计算小于等于第3个最小值的数据,使用“-”计算符将数量转换负数,即可从数据的结尾删除指定行数。

EXPAND(将数组扩展指定数量行列)

示例、分数60分及以上的行筛选出来并且加一列标注为“优秀”

=EXPAND(FILTER(G5:I11,I5:I11>=60),,4,"优秀")

使用FILTER函数筛选出分数大于等于60分的数据,然后使用EXPAND函数将数据源的3列扩展为4列,设置EXPAND函数第4个参数可以指定扩展后列的填充值。

3 阅读:392