Excel查找字符串中指定字符的位置
有时我们需要在一长字符串中查找某特定字符某次出现的位置,下面我给大家介绍如何用公式来实现。
操作方法
- 01
在介绍此方法之前,我们先通过两个简单的例子熟悉两个常用的字符串应用公式。 用Hello world!举例,查找字符串中字母"l"的个数
- 02
这个题目有个非常取巧的方法,我们不用去一个个数它的个数,而只要知道它占几个位置就可以了,那么我们首先用len()计算出字符串长度=len(A),结果是12.然后用substitute()把l替换成""(相当于把它从字符串中删除了),再用len()求出替换后字符串长度:=LEN(SUBSTITUTE(A1,"l",""),结果是9,两个结果相减,最后求出l的个数为3!完整公式:=LEN(A1)-LEN(SUBSTITUTE(A1,"l",""))
- 03
第二个例子,我们来看如何查找字符串中指定字符的位置? 举例查找字符d在Hello world!中的位置,输入公式=FIND("d",A1),结果是11,我们来数数看是不是。。。。没错,find()函数还是明察秋毫的!现在似乎离我们的目标已经不远了。
- 04
现在我们来查找字母o在公式中出现的位置,通过观察我们发现字母o在字符串中有两个,find()默认只查找字母第一次出现的位置,如果我们想找第二个o出现的位置呢,其实我们一直忽略了find()函数的第三个参数——查找的起始位置!如果不对它修改特别指定的话,默认从第一个字母查找,好!我们的思路是让find()从第一个o出现的位置后开始查找!输入公式:=FIND("o",A1,FIND("o",A1)+1),结果如下图
- 05
如果出现三次?那就用上面的结果再进行一次嵌套!
- 06
那如果有人问,要是字母出现了N次呢?N>=100!很显然我们不能无限的嵌套,此时我们需要换个思路,可不可以用公式得出指定字母出现的所有位置,然后我们想选哪个就选哪个,当然可以,Excel只有你想不到,没有它做不到!下面我们来分步做!
- 07
首先,我们计算出指定字母出现的所有位置,要做到这一步,我们需要把整个字符串打散成独的字符,=MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),这个公式是专门干这个,大家可以背下来!按F9可以看到由字符串中每一个字母组成的数组,现在可以对它们进行单独审讯了。
- 08
第二步,我们用if()函数来判断:如果字母等于"l",就给出它所在的位置,否则就给出一个超大数值,下面再说为什么要用超大数值。公式:=IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="l",ROW(INDIRECT("1:"&LEN(A1))),65535) 按F9观察结果为{65535;65535;3;4;65535;65535;65535;65535;65535;10;65535;65535},l共出现了三次,位置分别是,3、4、10,这和我们观察的结果是一致的,其它字符位置被超大数65535代替
- 09
第三步,我们需要在此数组中找出想要的结果,也就是3、4、10,这三个数字。此处用到small()函数,small(array,k)函数,有两个参数,第一个是数值集合,第二个是指定第k个最小值!它所返回的就是在数值集合中第k个最小值!刚才我们把其它字符替换成65535作用正在于此,我们用small()在{65535;65535;3;4;65535;65535;65535;65535;65535;10;65535;65535}中查找第k个最小值,就是查找字母l在字符串中第k次出现的位置!公式:=SMALL(IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="l",ROW(INDIRECT("1:"&LEN(A1))),65535),3),因为是数组公式,输入完成挌Ctrl+Shift+Enter三键连接,结果如下图: 想找第几个,k就改成几