用Excel公式查找字符串中*星号位置并取出数字
对于单元格字符串中的字符的查找,*星号和?问号这样的字符和其它普通的字符的查找方式是不一样的,因为这两个符号还代表着其它的意义。
操作方法
- 01
所以,要想查找字符串中的,*星号和?问号,必须在其前面加上这样的一个符号 ~ 方能找到。 下面,我们看例子吧。如下表。
- 02
上表中,每个单元格都包含两个*星号,同时还包含三组数字,但是,每组数字的长度都不一样,有的长有的短。现在的问题是,如何把每个单元格中被*星号隔开的每数字分别取出来? 一、问题的分析 要想取出被两个*星号隔开的三组数字,关键的问题在于,如何知道并获取两个*星号分别处于字符串中的哪个位置。 知道两个*星号的位置后,我们就可以使用截取函数将三组数字分别取出来。 二、获取两个*星号的位置 获取某个字符在字符串中所处的位置,可以使用SEARCH和SEARCHB函数来查找位置。 两个函数的语法相同,如下: SEARCH(find_text,within_text,start_num) SEARCHB(find_text,within_text,start_num) 不过,两个函数的区别在于,前者在查找的时候,把一个汉字的长度当作一个字符,后者则是以字节的方式来查找,一个汉字当两个字节,所以,一个汉字的长度就为2。一般情况下,在中文英文数字特殊字符混合的字符串中查找,应该使用SEARCH函数。 把以上两个函数翻译成中文,其语法为: SEARCH(要找的字符,包含字符的字符串,从串中的第几个位置开始找) SEARCHB(要找的字符,包含字符的字符串,从串中的第几个位置开始找) 有了如上的函数基础与理论指导,下面,我们开始查找两个星号的位置吧。 ①第一个*星号的位置 如下图,通过函数=SEARCH("~*",A1)即可获取第一个星号的位置,处于第5位。
- 03
②第二个*星号的位置 第二个*星号的位置查找,就比较困难了,公式有点绕口令的感觉。 总之,公式如下:=SEARCH("~*",A1,SEARCH("~*",A1)+1)
- 04
看到了吧?上述的公式比较复杂,但是,却也很好理解。 通过公式=SEARCH("~*",A1)可获得第一个位置,那么,再第一个位置的基础上加1,从这个位置开始继续往下找,就可以找到第二星号的位置,所以,公式就是上图中稍微绕口的函数了。 三、从带有星号的字符串中提取数字 有了一二的基础,现在,我们该是提取数字了。 ①提前第一个星左边的数字公式 =LEFT(A1,SEARCHB("~*",A1)-1) ②提取中间那个数字的公式 =MID(A1,SEARCHB("~*",A1)+1,(SEARCHB("~*",A1,SEARCHB("~*",A1)+1))-SEARCHB("~*",A1)-1)