金山WPS

关注公众号 jb51net

关闭
软件教程 > 办公软件 > 金山WPS >

提取任意行列数据太好用了! wps中chooserows与choosecols函数使用技巧

脚本之家

大家好,今天我们继续讲讲CHOOSEROWS与CHOOSECOLS函数。我们从函数单词上基本就能看出,CHOOSE是英文选择的意思,ROW与COL分别是英文行与列的缩写。所以CHOOSEROWS为“选择行”之意;CHOOSECOLS为“选择列”之意,以字母“S”为后缀,表示不仅能选择单行或单列,也能选择多行或多列。

函数参数:

从参数中可以发现,365版本函数就单个函数的参数来说,都是非常好理解的,就是选中一个区域,指定条件返回等;如昨天分享的TOCOL、TOROW,一个返回列,一个返回行,参数也类似;单单看参数不好理解,直接上案例;

CHOOSEROWS函数是Excel365和WPS表格新增的动态数组函数,用于从数据源中提取指定行并生成新数组。

语法:

=CHOOSEROWS(数据范围, 行号1, [行号2], ...)

比如我们输入公式:

=CHOOSEROWS(A1:C9,1,5,-1)

可从A1:C9区域内,将第1行标题行,第5行以及倒数第1行的整行内容选择并提取出来。

CHOOSECOLS函数用于从数据源中提取指定列,生成新的动态数组。

语法:

=CHOOSECOLS(数据范围, 列号1, [列号2], ...)

比如我们输入公式:

=CHOOSECOLS(A1:D9,2,-1)

以上是对这两个函数基本含义的解释。CHOOSEROWS函数在平时的工作运用中相对用的较少,因为我们往往对行的控制不如对列的控制用的多,所以我们来讲讲CHOOSECOLS函数的两个常见案例。

使用案列:

基础用法

如下图数据中,表1是一个数据区域,如需要在表2或其它区域返回5月的各个产品在各超市的销量和乐购超市1到6月的销量数据,可以在以下单元格分别录入以下函数:

以上函数理解,第二参数行号和列号是相对的就可以了,理解好后,可以根据这两个行号创建一些复杂的动态引用了,如返回某段时间范围的数据并汇总,来看一下高级用法;

每隔N列取值

如下图所示:

A1:G5区域表格表示各商品每日的出入库明细数据。我们想要将产品名称和每日的“出库”数据提取出来。

因为所有的出库数据分布在A3:G5区域的第3列、第5列和第7列。假设天数比较多的情况下,单个依次输入列号比较麻烦,不仅输入效率低,公式参数还特别长。但是不用怕,我们的列号参数支持数组。

我们首先输入公式:

=ROW(1:3)*2+1

ROW函数获取第1行~第3行的行号,数组元素分别是{1;2;3},在此数组的基础上各元素分别乘以2,输出新的数组{2;4;6},最后在此数组的基础上加1,形成最终我们需要的数组{3;5;7}。

最后很简单了:

=CHOOSECOLS(A3:G5,1,ROW(1:3)*2+1)

我们在A3:G5数据范围内,分别提取第1列,第{3;5;7}列的数据。

逆向从右向左查询

A1:B4区域为产品与编码的唯一对照表。我们想要根据“编码”从数据源A1:B4中逆向查询产品名称。

最重要就是利用CHOOSECOLS函数从新构造查询区域的列顺序,化逆向为正向,把我们不会的痛点转换为我们擅长方式。

这样输入公式:

=CHOOSECOLS(A1:B4,2,1)

在A1:B4区域,选择并提取第2列和第1列,这就从新构建出了一个“编号”列在左,“产品”列在右的新数组。

最后习惯性用VLOOKUP函数:

=VLOOKUP(E2,CHOOSECOLS(A1:B4,2,1),2,0)

查询E2单元格的编号b07,在新的数组查询区域内第2列所对应的产品名称为“橡皮”。

范围求和

还是上面的数据,需要查询指定销售月份的所有超市的汇总销量,如想知道1月到3月或者3月到4月的销量汇总,如何设计是查询报表?设计此类查询报表只需要思考变量和定量分别是什么就可以了。变量就是查询条件的月份开始和结束时间。定量就是销售数据,确定后就不变了;

确定开始月和结束月,用MATCH来判断,长度可以直接相减就可以了;

为了确保大家理解公式,公式先不合并,分段写,分别录入以下函数:

D11 =MATCH(C11,C2:H2,0) 开始月列号

D12 =MATCH(C12,C2:H2,0) 结束月列号

D13 =SEQUENCE(,D12-D11+1,D11,1) 范围列,返回2到4列

C13 =SUM(CHOOSECOLS(C3:H9,SEQUENCE(,D12-D11+1,D11,1))),用CHOOSECOLS返回C3:H9区域的第2到4列,并用SUM函数求和;写好这个函数后,只需要调整查询范围就可以快速找到对应的动态范围的销售数据。

过滤数据

有时候用筛选函数对指定数据区域进行条件筛选的时候,因为数据区域和条件的原因,会出现我们不想要的列,此时用CHOOSECOLS可以对筛选结果进行指定返回列。如下图对源数据中条件为本科的员工返回对应的联系电话。录入以下函数:

G1= =VSTACK({"姓名","电话"},CHOOSECOLS(FILTER(A2:E14,C2:C14="本科"),1,5))结果如下图所示。

为了方便大家理解,分步运算结果如下:

步骤1:=FILTER(A2:E14,C2:C14="本科") ,筛选本科的结果

步骤2:=CHOOSECOLS(FILTER(A2:E14,C2:C14="本科"),1,5),保留第1列和第5列

步骤3:=VSTACK({"姓名","电话"},CHOOSECOLS(FILTER(A2:E14,C2:C14="本科"),1,5))

整理数据

有时候从ERP软件中或者网页中复制数据到Excel的时候发现,数据错行错列,虽然是错行错列,但是还是有一点规律,如下图数据中,源数据中日期与消费金额与消费备注分别在两列,每一笔记录对应三行,第一行为日期,第二行为金额,第三行为空,边上一列对应消费备注,如何把这些数据整理成标准的一维数据呢?

步骤1:=WRAPROWS(B1:B14,3) ,把第1列转成1行最多3列的数据

步骤2:=WRAPROWS(C1:C14,3),把第2列也转成转成1行最多3列的数据

步骤3:==HSTACK(WRAPROWS(B1:B14,3),WRAPROWS(C1:C14,3)),把第1列和第2列并到一起;

步骤4:=CHOOSECOLS(HSTACK(WRAPROWS(B1:B14,3),WRAPROWS(C1:C14,3)),1,2,4),保留第1列、第2列、第4列;

步骤5:

=VSTACK({"消费日期","金额","备注"},CHOOSECOLS(HSTACK(WRAPROWS(B1:B14,3),WRAPROWS(C1:C14,3)),1,2,4)),加上标题

思路总结

wps中的某个新函数绝对不是单单一个函数就可以发挥最大功能的,配合上其它函数才是战斗力最强的,特别是理解数组形态,垂直、水平、行、列方向,配合一些特定组合可以达到一个公式搞定特定需求的结果;

合并区域:VSTACK+ HSTACK,特别适合加标题;

选择行列:CHOOSECOLS CHOOSEROWS,特别适合去除无效行列,保留有效行列;

筛选结果:FILTER,条件筛选函数

合并结果:TEXTJOIN、CONCAT; 把结果合并

分开结果:TEXTSPLIT 把结果再次分开