昨天有位群友的问题稍微有点意思,分享给大家。
如上图,需要从A列中提取订单号出来。
订单号码为19为数字,如果A列每个单元格中订单号前后都有标志性的字符,我们可以用FIND找到这个位置,进而推断出订单号的起始位置,然后用MID函数提取即可。
可是这位群友说订单号前后的字符不固定,那怎么办呢?
他想到用MID函数从字符串的每个位置提取19位字符然后乘以1,找到最大的那个数字就是订单号,如下:
这种思路理论上是不错的,但是会遇到一个问题,订单号为19位,Excel中的数字长度最长不能超过15位,超过以后后面的数字都会变为0,所以结果还是会出错。
这事还真不好搞对吧,用以前的函数我们得绞尽脑汁思考,多个函数嵌套。
看下Excel中的新函数吧。
解决这个问题轻而易举。
解释下这个函数的意思。
REGEXEXTRACT 函数允许基于提供的正则表达式从字符串中提取文本。可以从第一个匹配中提取第一个匹配项、所有匹配项或捕获组。
对于使用过正则朋友来说,这个函数很简单,对于不懂正则的同学来说,稍微学习下也能灵活应用它。
比如上例中,公式:=REGEXEXTRACT(A1,"\d{19}"),即我们想在A1单元格的字符串中提取与表达式"\d{19}"相匹配的字符串,"\d{19}"就是个正则表达式,"\d"代表数字的意思,数字也可以用[0-9]来表示,所以公式写成=REGEXEXTRACT(A1,"[0-9]{19}")也是可以的。
{19}表示匹配多少次,=REGEXEXTRACT(A1,"\d{19}")整个的意思就是匹配数字并且连续匹配19次,中间还不能断掉。
正则的英文单词是:Regular Expression,代码中常常简写为REGEX,EXTRACT有提取之意,两个单词综合下就有了REGEXEXTRACT,即用正则表达式提取字符串的意思。
我不了解正则表达式,所以我不会用这个函数?
其实只要知道这个函数的简单语法就行,至于正则表达式,我们完全可以借助网络,所以不懂正则表达式也可以用好这个函数,况且工作中常需要的提取也就那么几个固定的场景。
本案例文件下载链接:
https://pan.quark.cn/s/1a2fd4621369
终身会员权益介绍
1、我录制的所有视频教程都可以免费学习,每门教程都有对应的素材,视频学习永久有效,视频学习中遇到的疑问可以直接找我答疑。
2、除了视频中遇到的问题之外,工作中遇到的问题也可以找我答疑(主要答疑Excel方面的问题)。
3、会员群里不定期会用腾讯会议开直播,根据大家的需求讲解一些实际工作中遇到的问题的解决方案、一些数据处理流程的优化等。
4、我百度网盘中一些常用的软件及学习资料都可以分享给您,包括各版本的Office,政企版WPS,WPS中的VBA插件,以及一些常用的软件等,即我网盘里的所有资源都可以共享给你。
5、终身会员可以分销我的课程,有提成的!
终身会员群只招收100名学员,XF:999,需要的朋友请加V:527240310