Excel截取两个相同符号前、中、后字符串

起初还在难受EXCEL没有类似split()的函数,然后搜了下说EXCEL新增了TEXTSPLIT()函数,但是实测暂时没法用,那么如何解决呢,自己写了写,又上网搜了搜,汇总如下。

这几个处理方式体现了Excel下的计算思维,以拆分长宽高为例。

Excel截取两个相同符号前、中、后字符串

一、截取字符前的字符串

=LEFT(A2,FIND("*",A2)-1)

公式①:FIND(要查找的字符串,原始数据,[开始位置]),对原始数据中某个字符串进行定位,以确定其位置
公式②:LEFT(字符串,[字符个数]),从字符串左边按字符个数截取字符串

算法思路,首先用FIND()找到*号的位置然后减去1,得到字符串最后一个字符的位置,然后使用LEFT()截取这个字符串。

 

二、截取两个相同字符之间字符串

我的定位截取法:

直接思路,首先找到第1个字符和第2个字符的位置,然后使用MID()截取两个字符中间的字符串,咱们叫这个“夹逼法则”。
步骤①:第1个*号的位置FIND("*",A2),那么中间字符串的起始位置需要加1即FIND("*",A2)+1
步骤②:第2个*号往后查找就行,也就是FIND("*",A2,FIND("*",A2)+1),那么注意截取的字符串长度=后-前-1,很简单,1到5中间有几个数字,有(5-1-1)个,也就是3个。
步骤③:定位了两个*号的位置,然后直接使用MID()函数,最终得到:

=MID(A2,FIND("*",A2)+1,FIND("*",A2,FIND("*",A2)+1)-FIND("*",A2)-1)

此时我发现这只对有两个*号的有用,那么多个*号,怎么找到最后一个*号呢?
步骤①:首先获取*号出现的次数,用总长度减去去除*号后字符的长度就为*号的个数,即LEN(A2)-LEN(SUBSTITUTE(A2,"*",""))
步骤②:将最后一个字符替换为字符中不存在的字符,比如@号,即为SUBSTITUTE(A2,"*","@",LEN(A2)-LEN(SUBSTITUTE(A2,"*",""))),
步骤③:然后用FIND()找到@的位置,最终得出最后一个字符的位置=FIND("@",SUBSTITUTE(A2,"*","@",LEN(A2)-LEN(SUBSTITUTE(A2,"*","")))),此时所截取的字符长度就为LEN(A2)-LEN(SUBSTITUTE(A2,"*",""))))-FIND("*",A2)-1。
最后得出:

=MID(A2,FIND("*",A2)+1,FIND("@",SUBSTITUTE(A2,"*","@",LEN(A2)-LEN(SUBSTITUTE(A2,"*",""))))-FIND("*",A2)-1)

网上的插空格法:

=TRIM(MID(SUBSTITUTE(A2,"*",REPT(" ",99)),99,99))

公式①:REPT(字符串,重复次数),输出一个重复字符串
公式②:SUBSTITUTE(原始数据,旧字符串,新字符串,[替换序号]),将原始数据中的旧字符串替换成新的,指定了替换序号只会替换这一个,不指定就全部替换。
公式③:MID(字符串,开始位置,字符个数),从一个字符串中截取出指定数量的字符
公式④:TRIM(字符串),移除字符串两侧的空白字符或其他预定义字符,默认为移除空白字符

算法思路,首先使用SUBSTITUTE()将原数据中的*号替换成99个空格,然后用MID()从第99个字符截取99个字符串,最后使用TRIM()删除字符串前后的空格。
其中前段和后段的字符串长度要小于99(一般都小于99),如果超过99,相应的,要增大99这个数值。

 

三、截取字符后的字符串

我的定位截取法:

步骤①:首先获取最后*号的位置FIND("*",A2,FIND("*",A2)+1)
步骤②:在其基础上加1得出所要截取字符串的起始位置FIND("*",A2,FIND("*",A2)+1)+1
步骤③:用总长度LEN(A2)减去该位置就是第3段的长度,即LEN(A2)-FIND("*",A2,FIND("*",A2)+1),最后再用MID()截取,最终得到:

=MID(A2,FIND("*",A2,FIND("*",A2)+1)+1,LEN(A2)-FIND("*",A2,FIND("*",A2)+1))

同理对多个*号,

=MID(A2,FIND("@",SUBSTITUTE(A2,"*","@",LEN(A2)-LEN(SUBSTITUTE(A2,"*",""))))+1,LEN(A2)-FIND("@",SUBSTITUTE(A2,"*","@",LEN(A2)-LEN(SUBSTITUTE(A2,"*","")))))

 

网上的插空格法:

=TRIM(RIGHT(SUBSTITUTE(A2,"*",REPT(" ",LEN(A2))),LEN(A2))

公式①:LEN(字符串),取字符串的长度

算法思路,用SUBSTITUTE()将原数据中的*号替换成原数据长度的空格,然后使用RIGHT()从右开始截取原数据长度的字符串,最后使用TRIM()删除字符串前后的空格。

本文作者:𝙕𝙆𝘾𝙊𝙄

文章名称:Excel截取两个相同符号前、中、后字符串

文章链接:https://www.zkcoi.com/idea/skills/2311.html

本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
𝙕𝙆𝘾𝙊𝙄𝙕𝙆𝘾𝙊𝙄
上一篇 2022年9月15日
下一篇 2022年10月9日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

私聊博主

立即联系
一般有空就回复

qrcode_web

微信扫码联系我

分享本页
返回顶部