Excel情报局
职场联盟Excel
大家好,今天我们来解决这样的一个问题:同一单元格内两部分固定内容位置互换?
如下图所示:
A列为替换前内容,格式为“物料代码-物料名称[数字长度][字母单位]”,例如A2单元格中的内容“1013-钢笔9cm”。现在我们想要将“物料名称”连接一个固定的产地名称后再与“物料代码-”进行位置互换,即“1013-钢笔9cm”替换成“钢笔(广东)1013-9cm”。
这个问题的解决方法肯定不止一种方式,我们用REGEXP正则表达式函数更简单一些!
首先大致了解一下REGEXP函数的基本概念。
REGEXP函数是基于正则表达式,对复杂文本进行匹配、提取和替换的函数。
基本语法结构:
REGEXP(原始字符串,正则表达式,[匹配模式],[替换内容])
匹配模式是可选项,0或忽略表示提取,1表示判断是否包含,2表示替换。
替换内容是可选项,仅在匹配模式为2时有效,用来替换匹配的内容。
部分正则表达式字符集参考:
我们输入函数公式:
=REGEXP(A2,"(\d{3,4}-)([一-龟]+)",2,"\2(广东)\1")
正则表达式\d代表任意的多个数字。
正则表达式\d{3,4}代表3个字符长度或4个字符长度的任意数字。
所以用(\d{3,4}-)就可以代表A2单元格中的“物料代码-”,即“1013-”。
正则表达式[一-龟]代表任意的汉字。
正则表达式[一-龟]+代表任意的连续的汉字。
所以用([一-龟]+)就可以代表A2单元格中的“物料名称”,即“钢笔”。
以上连接起来作为REGEXP函数的第二参数,正则表达式。
REGEXP函数的第3参数设置为“2”,表示替换。
(\d{3,4}-)代表第一个分组;([一-龟]+)代表第二个分组。
所以第四参数"\2(广东)\1",表示将第二个分组的内容连接产地“广东”后与第一个分组内容再连接,这样就实现了位置的互换。
〖往期知识点精彩超链接点击阅读〗