在Excel操作中,截取字符串中某段指定的字符是经常遇到的问题,而执行这常见问题的常规函数就非“LEFT”、“MID”、“RIGHT”、“FIND”、“LEN”莫属了,尤其是将五者有机组合后,可以实现更多截取信息的操作,非常实用。下面就分别说明以上五个函数的语法,并以一个案例贯穿五个函数的用法。
如果觉得有用,点击收藏以备不时之需。
语法与解释
LEFT函数
娜娜项目网每日更新创业和副业教程
网址:nanaxm.cn 点击前往娜娜项目网
站 长 微 信: nanadh666
LEFT函数的主要作用是基于指定的字符串返回文本里字符串中从左开始的第一个或前几个字符串
LEFT(text, [num_chars])
LEFT(要提取字符的文本字符串, [由 LEFT 所提取的字符数])
即,从指定字符串(单元格)左侧开始,截取N个字符。N的数量为函数第二参数的数值。
MID函数
MID函数的主要作用是从一个字符串中截取出指定数量的字符
MID(text, start_num, num_chars)
MID(要提取字符的文本字符串,从左起第几位开始截取,截取几位字符)
即,从指定字符串(单元格)中的某一个位置开始,截取指定数量的字符。
RIGHT函数
RIGHT函数的主要作用是基于指定的字符串返回文本里字符串中从右侧开始的最后一个或后几个字符串
RIGHT(text,[num_chars])
RIGHT(要提取字符的文本字符串, [由 RIGHT 所提取的字符数])
即,从指定字符串(单元格)右侧开始,截取N个字符。N的数量为函数第二参数的数值。
FIND函数
FIND函数用于返回一个字符串在另一个字符串中出现的起始位置(区分大小写)
FIND(find_text,within_text,start_num)
FIND(查找的字符串,要在其中查询的源字符串,指定从源字符串中第几个字符开始查找)
即,从指定指定字符串(单元格)中查找某个特定的字符串所在的位置,返回该字符串所在位置的数值。
LEN函数
LEN函数用于返回文本字符串中的字符个数
LEN(text)
即,从指定指定字符串(单元格)中返回该字符串总的字符数量。
案例
提取以下设备规格中的“长”、“宽”、“高”
截取长度
位于字符串最左侧的长度数据,很容易就让人想到使用LEFT函数提取mid函数,而问题在于,LEFT函数中,第二参数要给出明确的提取字符的数量mid函数,问题中的长度却不是固定的。分别有3位的“400”、“600”、“800”与4位的“1200”、“1600”、“1800”两种字符长度。
LEFT(text, [num_chars])
LEFT(要提取字符的文本字符串, [由 LEFT 所提取的字符数])
在这里,怎么告诉Excel哪几个字符串我们需要截取3个字符,哪几个字符串我们需要截取4个字符呢?
这就要使用到FIND函数了,利用FIND函数返回一个数值,用这个数值在构造我们需要截取的字符数数值。
在这里,我们需要利用长*宽*高中的“*”符号,来查询其在字符串中的位置,并返回位置数值。
在C3单元格键入以下公式:=LEFT(B3,FIND(“*”,B3)-1)
上述公式含义为:在B3单元字符串“400*800*1200”中,从字符串左侧开始截取N位字符。其中N为字符“*”在B3单元格字符串中第一次出现的字符位置减去“1”。
在“400*800*1200”中,为=LEFT(B3,4-1)=LEFT(B3,3),即返回B3单元格字符串左起头三个字符,“400”;
在“1200*800*500”中,为=LEFT(B6,5-1)=LEFT(B6,4),即返回B6单元格字符串左起头三个字符,“1200”;
长度截取得以解决。
提取宽度
宽度值位于字符串中间,让人想到使用MID函数提取,而问题在于,MID函数中,第二参数要给出明确的开始截取字符的位置,第三参数要给出明确的截取长度,问题中的开始截取位置与截取长度均不是固定的。
MID(text, start_num, num_chars)
MID(要提取字符的文本字符串,从左起第几位开始截取,截取几位字符)
此时,我们也需要利用FIND函数找位置的特性找出并返回两个指定的位置:一个是第一个“*”出现的位置X,它是我们开始截取字符的起点;在一个是第二个“*”出现的位置Y。
通过(Y-1)与X之差得到我们需要截取的字符数量。
在D4单元格中键入以下公式:
=MID(B3,FIND(“*”,B3)+1,FIND(“*”,B3,FIND(“*”,B3)+1)-1-FIND(“*”,B3))
上述公式含义为:从B3字符串的第一个“*”后的一个位置为起点开始截取,截取第二个“*”出现的位置减去1再减去第一个“*”出现位置的数值,作为截取字符段长度。
在“400*800*1200”中,为=MID(C3,5,8-1-4)=MID(C3,5,3),即返回C3单元格字符串中从第5个字符开始,截取3个字符,“400”;
在“1600*1200*600”中,为=MID(C7,6,10-1-5)=MID(C7,6,4),即返回C7单元格字符串中从第6个字符开始,截取4个字符,“1200”;
宽度截取得以解决。
截取高度
高度值位于字符串最右侧,我们可以利用RIGHT函数来截取其数值。从RIGHT函数的语法可知,我们需要给出明确、固定的截取位数,才能完成字符截取,而案例高度数值位数有3位数的“800”、“400”、“500”,也有4位数的“1200”、“1500”,不是明确、固定的。
RIGHT(text,[num_chars])
RIGHT(要提取字符的文本字符串, [由 RIGHT 所提取的字符数])
此时,我们可以利用LEN函数,返回字符串总字符数量数值,减去第二个“*”所在位置后一位,作为要截取的字符位数。
上述公式含义为:从E3字符串的最右侧为起点开始截取,截取总字符串字符数量数值减去第二个“*”出现的位置后1位的数值,作为截取字符段长度。
在“400*800*1200”中,为=RIGHT(E3,12-8)=MID(E3,4),即返回E3单元格字符串中从最右侧开始截取4个字符,“1200”;
在“1600*1200*600”中,为=MID(E7,13-10)=MID(E7,3),即返回E7单元格字符串中从最右侧开始截取3个字符,“600”;
高度截取得以解决。
总结
对于字符串的截取,数量运用LEFT、MID、RIGHT、FIND、LEN五个函数,可以实现从字符串的左侧、中间任意位置、右侧等作为任意起点位置,截取任意长度的字符数。其中最难以处理的问题,就是利用“FIND”函数将“LEFT”、“MID”、“RIGHT”函数中需要确定的一个绝对的“明确的、固定的截取长度”,转化为一个相对的“明确的、固定的截取长度”。
但是本案例中,宽度的截取函数嵌套较多,略显复杂。相信一定有更为简便的解决方案,希望大家留言交流。
娜娜项目网每日更新创业和副业教程
网址:nanaxm.cn 点击前往娜娜项目网
站 长 微 信: nanadh666