只要一个Excel函数,就可以轻松找到某个字符串的位置




  1. 如何判断2个字符串是否完全相同——EXACT函数!
  2. 多个文本合并——CONCATENATE函数、&和PHONETIC函数!
  3. 如何查找某个字符串的位置——妙用FIND和FINDB函数!





如何判断2个字符串是否完全相同——EXACT函数

EXACT函数功能是用来测试2个字符串是否完全相同,如图3-10-9所示。

A1单元格文本内容后面有空格,而B1没有,=EXACT(A1,B1)返回结果为FALSE,表示2个字符串内容不相同。


图3-10-9

多个文本合并——CONCATENATE函数、&和PHONETIC函数

CONCATENATE函数、&、PHONETIC函数都可以将多个单元格内容合并为一个单元格,3个函数的区别在于:

  1. CONCATENATE函数最多只能合并255个文本字符串,可以是字符串、数字或单元格的引用,如A1中ab,B1中cd,那么公式=CONCATENATE(A1,B1)返回值为abcd。
  2. “&”合并字符串的个数不受限制。
  3. PHONETIC函数可以对一个或多个值执行运算,并返回一个或多个值。函数可以简化和缩短工作表中的公式,尤其在用公式执行很长或复杂的计算时。

要实现A1、B1、C1单元格合并,传统的方法单元格合并只能保留A1的值,而B1、C1的值会被删除掉。用PHONETIC函数可以实现3个单元格值保留合并。具体操作在D1单元格输入=PHONETIC(A1:C1)回车即可。

函数语法:

PHONETIC(reference)

如果reference为不相邻单元格的区域,将返回错误值#N/A。

函数会忽略空白单元格,不支持数字、日期、时间以及任何公式生成的值的连接。

如图3-10-10所示,公式=PHONETIC(A1:C1)返回结果为12(文本数字)。


图3-10-10

如图3-10-11所示,公式=PHONETIC(A1:C1)返回结果为空。


图3-10-11

那么是不是所有的文本型数字均能用该函数连接呢?

我们再在单元格中输入=LEFT(456)或者=TEXT(123,”@”),然后对生成的文本型数字进行PHONETIC的连接,同样发现,得出的值为空。这也进一步印证了凡是公式生成的值均不能通过PHONETIC连接。

我们可以利用这种忽略公式值的特性进行一些函数或技巧上的操作和处理。

上面的例子是针对3个单元格内容的合并,如果需要合并的单元格有上千个,PHONETIC函数的魅力就体现出来了,比如,如果需要合并A1:A1000的内容,只需要用公式=PHONETIC(A1:A1000)就可以实现,如果用“&”合并,公式会很长,用PHONETIC函数节约了公式中的字符数。

再看一个例子,A列是城市名称,要把这些内容合并到一个单元格,并且中间加顿号、,在B列输入辅助列,内容为顿号、,C列公式以及结果如图3-10-12所示。


图3-10-12

如何查找某个字符串的位置——FIND和FINDB函数

FIND函数用来对原始数据中某个字符串进行定位,以确定其位置。FIND函数进行定位时,总是从指定位置开始,返回找到的第一个匹配字符串的位置,而不管其后是否还有相匹配的字符串。

FIND函数语法:

FIND(find_text,within_text,start_num)

  • find_text是要查找的文本,区分大小写。
  • within_text是包含要查找文本的文本。
  • start_num指定开始进行查找的字符。
  • within_text中的首字符是编号为1的字符。如果忽略start_num,则假设其为1。

注意:

使用start_num可跳过指定数目的字符。例如,假定使用文本字符串“Tencent”,如果要查找文本字符串中第一个“c”的位置,则可将start_num设置为3,这样就不会查找开头的2个字符。FIND将从第3个字符开始查找,而在下一个字符处即可找到find_text,于是返回编号4,如图3-10-13所示。FIND总是从within_text的起始处返回字符编号,如果start_num大于1,也会对跳过的字符进行计数。


图3-10-13

如果find_text是空文本(),则FIND会返回数值1,如图3-10-14所示。


图3-10-14

find_text中不能包含通配符。

  • 如果within_text中没有find_text,则FIND返回错误值#VALUE!。
  • 如果start_num不大于0,则FIND返回错误值#VALUE!。
  • 如果start_num大于within_text的长度,则FIND返回错误值#VALUE!。

FINDB用于查找其他文本串(within_text)内的文本串(find_text),并根据每个字符使用的字节数从within_text的首字符开始返回find_text的起始位置编号。

FIND与FINDB的区别在于:前者是以字符数为单位返回起始位置编号,后者是以字节数为单位返回起始位置编号。

语法:

FINDB(find_text,within_text,start_num)

参数:

find_text是待查找的目标文本;within_text是包含待查找文本的源文本;start_num指定从其开始进行查找的字符,即within_text中编号为1的字符。如果忽略start_num,则假设其为1。

注意:

此函数适用于双字节字符,它能区分大小写但不允许使用通配符。其他事项与FIND函数相同。

实例:

如果A1=腾讯,则公式“=FINDB("讯",A1,1)”返回3。因为每个字符均按字节进行计算,而一个汉字为2个字节,所以第二个汉字“讯”从第3个字节开始,如图3-10-15所示。


图3-10-15