提取同一单元格混合内容中的名称、销量与单位,REGEXP正则“诡计多端”!

职场   职场   2024-12-04 11:00   河北  


Excel情报局

职场联盟Excel

生产挖掘分享Excel基础技能
Super Excel Man
用1%的Excel基础搞定99%的职场问题
做一个超级实用的Excel公众号
Excel是门手艺玩转需要勇气
数万Excel爱好者聚集地


    



大家好,今天我们来解决这样的一个问题:提取同一单元格混合内容中的名称、销量与单位?REGEXP正则表达式函数的应用比VBA代码还要实用,掌握与运用起来更加大众化


如下图所示

A2单元格内为一混合内容样板数据,包含若干组“地区名称:销量及单位”这样规律固定的数据,且不同组别的“地区名称:销量及单位”数据之间用分隔符分号“;”间隔,现在我们想要分别提取并拆分出名称、销量以及单位数据,显示在C:E列,形成一个如C3:E8一维表格式的表格区域



要想解决这个问题,就要大致了解一下REGEXP函数的基本概念


REGEXP函数是基于正则表达式,对复杂文本进行匹配、提取和替换的函数。


基本语法结构

REGEXP(原始字符串,正则表达式,[匹配模式],[替换内容])


匹配模式是可选项,0或忽略表示提取,1表示判断是否包含,2表示替换。

替换内容是可选项,仅在匹配模式为2时有效,用来替换匹配的内容。


首先我们先提取地区名称


我们输入正则函数REGEXP:

=REGEXP(A2,"[一-龟]{2,}")


[一-龟]表示所有的中文字符;

{2,}表示出现字符2次及以上提取。

因为“单位”数据都是1个字符构成的,比如“套”,“台”等。

所以"[一-龟]{2,}"会提取到除了“单位”以外的所有连续汉字。


REGEXP函数,使用正则表达式"[一-龟]{2,}",可以将A2单元格内的地区名称全部提取出来。



使用TRANSPOSE函数

=TRANSPOSE(REGEXP(A2,"[一-龟]{2,}"))


TRANSPOSE函数是一个转置函数,相当于选择性粘贴中的转置功能。

TRANSPOSE函数的语法:

TRANSPOSE(数据区域)


所以运用TRANSPOSE函数将REGEXP返回的一行多列的数组溢出结果转换为一列多行的结果,即一行转一列的转置效果。



然后我们提取销量数字


继续输入正则函数REGEXP

=REGEXP(A2,"\d+")


\d表示任意的单个数字;

\d+表示多个任意的连续数字。


REGEXP函数,使用正则表达式"\d+",可以将A2单元格内的销量数字部分全部提取出来。



使用TRANSPOSE函数

=TRANSPOSE(REGEXP(A2,"\d+"))


再次运用TRANSPOSE函数将REGEXP返回的一行多列的数组溢出结果转换为一列多行的结果,即一行转一列的转置效果。



最后我们提取单位数据


继续输入正则函数REGEXP

=REGEXP(A2,"(?<="&C4#&":"&D4#&").")


正则表达式 (?<=exp) 表示查找exp后面的内容。
所以用(?<="&C4#&":"&D4#&")来代表例如“石家庄:50”之后的内容。

正则表达式“.”这个点可以匹配任意的单个文本字符串。

连在一起表示提取“石家庄:50”之后的单个汉字,即提取到了单个单位汉字例如“台”。


其实重复学习Excel,刚开始是挺难的,但重复的次数多了总会成为习惯,先从坚持一星期开始,你会爱上那种脑子又累,又无限充实的感觉。回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。


 

知识点精彩超链接点击阅读

VLOOKUP的新搭档HSTACK函数,实现逆向查询
一个小小的VSTACK函数,就能实现多工作表合并
VLOOKUP最新用法,提取混合内容中的手机号
带超链接的VLOOKUP函数,让查询体验起飞
最新方法来了:按指定的次数重复数据
合并工作表,用两个函数就搞定啦
比VLOOKUP还好用的多条件查找
点击谁就筛选谁,实现筛选自动化
以“数字”作为分隔符,进行分列
点击谁,就对谁自动条件求和
更多实用内容请在号内历史文章搜索 

Excel情报局
Excel表格爱好者,分享一些日常的积累。做一个职场人都能看懂的表格技巧公众号。多学一个Excel小技巧,会让你在职场中多一分底气与自信。
 最新文章