结合正则函数,交流一下动态数组扩展技巧
WPS函数专家
我们通过一个网友的实战案例来一起交流学习一下,动态数组的扩展技巧,顺带学习一下新的正则函数!
▍需求说明
需求比较简单,,前面的数字是学生的序号,后面是这批学生对应的积分,但是由于填写的不规范,实际比较乱(模拟的最乱情况),现在想整理成一维表,一列学号,一列积分,具体看示意结果!
解决这个问题,我们最主要的是提取数字,这部分通过正则函数来完成,不难,但是两列对齐,也就是积分也要按学号个数扩展,写法就比较多了,也是我们本次的核心!
▍核心要点
①要点01-正则匹配数字
第一个要点是提取数字,这个简单的正则即可完成,记住\d表示0-9中的任意一个数字即可!\d+表示匹配1位或者对位数字
下面是WPS中的写法,A1单元格举例,提取的就是全部数字!
②要点02-数组对齐
如果有一列数字,我们有一个元素想扩展成对应的行数,与其对齐,大部分同学,可能或想到下面的写法
结合上面的案例,我们看一下实战用法!
上面的写法是OK的,但是有点冗长,如果你有数组思路,Excel中有很多数字对齐的写法,下面推荐一种小编常用的!
很显然上面的写法精简了不少,下面我们看一下核心部分,IF结构!
{1;2;3} 是一列三行的常量数组,{1,0} 部分可以理解为{TRUE,FALSE},0 为FALSE,非0为TRUE,这函数处理时,用大括号括起来,表示结果是一个两列的数组,如果其中一个元素是单值会自动对齐填充。如果是多值会#NA填充对齐!这就是核心要点!
当然解决上面的问题,还有很多写法,比如使用WPS的REPTARRAY函数处理,但是还是没有上面的数组思维简洁
除了这些,其实还有很多处理套路,比如容错写法
上面的思路:让一个元素和一列内容左右拼接数组,肯定对不齐,确实的部分就会返回#NA错误,使用IFNA函数容错处理,再填充上单值即可!
上面的核心要点讲了,下面我们把这个题写一下吧!
▍参考写法
A1和A2单元格处理逻辑一样,上面我们已经解决了A1单元格,所以我们只要把逻辑使用LAMBDA函数做成一个自定义函数,然后调用即可,比如下面f就是自定义函数的名称,只有一个参数,就是对应的单元格,f(A1)表示调用A1单元格执行逻辑!结果OK!
那么多个单元格,只要使用REDUCE函数,执行后,每次的结果上下堆一下即可!核心是公式中的红色部分,也就是循环处理!
OK!以上就是本次的内容,希望大家都有自己的收获~
创作者俱乐部成员
WPS函数专家