2.2.2 字符串定位

不管是使用RIGHT、LEFT,还是MID函数,在一个字符串中提取字符时,需要确定最基本的两个变量:①截取的起始位置;②截取的终止位置。但事实上,在很多场景中,我们不知道需要截取的起始位置在哪里,这时就需要用到字符串定位函数FIND和SEARCH。

1. FIND函数的基本应用

FIND表示“查找”的意思,在Excel函数中,用于在一个长文本串中定位较短的文本串,并返回较短的文本串中起始位置的值,其表达式是:

FIND(Find_Text, Within_Text, [Start_Num])

中文表达式为:FIND(要查找的文本,包含要查找文本的文本串,[查找开始位置])。

FIND函数的前两个参数比较简单,第三个参数[Start_Num]为可选参数,缺省情况下默认为1,代表将从“Within_Text”中第一个字符开始查找,具体用法如图2-15所示。

图2-15 FIND函数示例

第一个公式=FIND("o",A2),表示要查找第一个字母o在Microsoft Office字符串中的位置。因为FIND函数的第三个参数空缺,默认为1,也就是从A2单元格中的字符串第一个字符开始,所以第一个o所在位置为5。

第二个公式=FIND("o",A2,6),其中第三个参数设置为6,表示不从A2单元格中字符串的第一个字符开始,而是从第六个字符s开始,查找第一个o所处的位置,此时我们查找出来的是整个字符串Microsoft Office中第二个o所处的位置,所以返回值是7。

注意:FIND函数区分大小写,所以小写o和大写O查找处理的结果不一样。

2. 利用FIND函数提取邮箱名

FIND函数结合MID函数(或者LEFT、RIGHT)能够截取的字符串就更灵活了,如图2-16所示,我们要从邮箱地址中分离出邮箱名。

图2-16 FIIND函数提取邮箱名

将LEFT函数与FIND函数结合起来,即可分离邮箱后缀和邮箱用户名。在B2单元格中输入公式=LEFT(A2,FIND("@",A2)-1),这个公式表示从A2单元格的字符串中截取左边的N个字符,这个N是怎么确定的?它是利用FIND函数来查找@符号的位置,也就是通过FIND("@",A2)-1计算得出的。通过FIND函数,查找“@”在A2单元格中的位置。为什么要查找这个“@”?因为它刚好位于用户名和邮箱后缀的衔接处。也就是说,在“@”符号之前的字符就是邮箱名,“@”符号之后的就是邮箱地址。FIND函数计算出“@”符号的位置后,把这个数值作为LEFT函数的第二个参数,即可提取出邮箱地址中的邮箱名。

拓展 Excel中还有一个查找文本函数SEARCH,其语法和FIND完全一样,区别如下:

① SEARCH函数不区分大小写,FIND函数区分大小写。

② SEARCH函数可以在第一个参数find_text中使用通配符(问号(?)和星号(*))。问号匹配任意单个字符,星号匹配任意一串字符。