加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

FIND、FINDB、SEARCH、SEARCHB函数详解_Excel公式教程

(2016-03-22 21:51:21)
标签:

excel公式教程

find函数

findb函数

search函数

searchb函数

分类: Excel公式教程-函数篇

文本查找函数包括四个:FIND、FINDB、SEARCH和SEARCHB,它们具有完全相同的语法。

语法1FIND(find_text,within_text,[start_num])

语法2FINDB(find_text,within_text,[start_num])

语法3SEARCH(find_text,within_text,[start_num])

语法4SEARCHB(find_text,within_text,[start_num])

这四个函数都在源文本within_text中查找子文本find_text,并返回find_text在within_text中出现的位置。它们的区别在于:

(1)函数FIND和SEARCH是以字符为计量单位;而函数FINDB和SEARCHB是以字节为计量单位。

(2)函数FIND和FINDB区分字母大小写,不支持通配符;而函数SEARCH和SEARCHB不区分字母大小写,可用通配符进行模糊查找。

参数start_num是一个数字值,小数部分截尾取整。用于指定起始查找位置。如果省略start_num,则从源文本within_text的第一个字符(或字节)开始查找。

函数返回find_text在within_text中的位置,该位置总是从within_text的第一个字符(或字节)开始计数,而不是从start_num开始计数的。

如果子文本find_text是空文本"",函数返回查找的起始位置,即1或者start_num。

如果找不到find_text,函数返回错误值#VALUE!。

Start_num的取值范围必须符合以下条件,否则函数返回错误值#VALUE!:

(1)Start_num必须大于等于1;

(2)如果源文本within_text不是空文本,截尾取整后的start_num不能大于within_text的长度,或者说,start_num必须小于within_text的长度加1;

(3)如果源文本within_text是空文本,截尾取整后的start_num必须是1,或者说,start_num必须大于等于1且小于2。例如,=FIND("","",1)返回1。

用法

一、FIND与SEARCH、FINDB与SEARCHB的区别在于两个方面:

(一)FIND和FINDB区分字母大小写;而SEARCH和SEARCHB不区分字母大小写。

例如,在单元格A1输入一钢管型号,比如“镀锌管 DN25”或“镀锌管 dn25”等。以下公式可查找“DN”、“Dn”、“dn”或“dN”在文本中的位置:

=SEARCH("DN",A1)

如果改用FIND函数,则只能查找“DN”的情况,如果输入成其余三种情况,公式都返回错误值#VALUE!:

=FIND("DN",A1)

需要注意的是,文本查找函数是区分半角、全角字符的。如果单元格A1输入成“镀锌管DN25”或“镀锌管dn25”等,上面的公式将返回错误值#VALUE!。我们可以把公式改为:

=SEARCH("DN",A1)

在这个例子,如果想用一个公式能够同时查找半角和全角字母,可用以下公式:

=IF(ISERR(SEARCH("DN",A1)),SEARCH("DN",A1),SEARCH("DN",A1))

Excel 2007以上版本可改用以下公式:

=IFERROR(SEARCH("DN",A1),SEARCH("DN",A1))

使用下面的公式则更为简单,公式中先用ASC函数把A1的字母统一转换成半角字符,然后再查找:

=SEARCH("DN",ASC(A1))

(二)FIND和FINDB不支持通配符;而SEARCH和SEARCHB可用通配符进行模糊查找。

例如:假设单元格A1的值为“小天鹅TG70-1411LPD滚筒洗衣机”,以下公式判断该单元格是不是小天鹅品牌的洗衣机:

=ISNUMBER(SEARCH("小天鹅*洗衣机",A1))

关于通配符更详细的介绍,请参阅:http://blog.sina.com.cn/s/blog_14e89401f0102wc21.html


二、FIND、SEARCH与FINDB、SEARCHB的区别在于计量单位的不同:FIND和SEARCH以字符为计量单位;FINDB和SEARCHB以字节为计量单位。具体表现在以下三个方面:

(一)函数返回值是以字符还是字节作为计量单位。例如:

=FIND("Hisense","海信Hisense")  返回3(字符)。

=FINDB("Hisense","海信Hisense")  返回5(字节)。

(二)起始查找位置是以字符还是字节作为计量单位。

例如,单元格A1的值为“客户级别:甲公司A级”,以下公式查找后面的“级”字是第几个字符:

=FIND("级",A1,4)

公式返回10(字符)。为了跳过前面的“级”字,把查找起始位置指定从第4个字符开始。

试试用以下公式:

=FINDB("级",A1,4)

公式返回5(字节)。FINDB函数的第三个参数把查找起始位置指定从第4字节开始,未能跳过第一个“级”字的位置。要跳过第一个“级”字查找,至少要把第三个参数改为6:

=FINDB("级",A1,6)

这时公式返回18(字节)。

(三)通配符“?”代表字节还是字符。例如:

=SEARCH("A??","BA中")  返回错误值#VALUE!

=SEARCHB("A??","BA中")  返回1


三、判断文本中是否包含某些特征字符。

下面的公式,单元格A1如果不包含“绝缘”,则返回TRUE;包含“绝缘”则返回FALSE。

=ISERR(FIND("绝缘",A1))

下面的公式,单元格A1如果包含"绝缘",则返回TRUE;没包含“绝缘”则返回FALSE。

=ISNUMBER(FIND("绝缘",A1))

下面的数组公式,如果A1中不包含“海尔”和“美的”,返回TRUE,否则返回FALSE。

{=AND(ISERR(FIND({"海尔","美的"},A1)))}

下面的数组公式,如果A1中包含“海尔”或“美的”,返回TRUE,否则返回FALSE。

{=OR(ISNUMBER(FIND({"海尔","美的"},A1)))}

在博文《ISNUMBER函数详解》和《ISERR函数详解》中有更多的这种例子。


四、截取文本中不确定位置的字符。

假设单元格A1是文本“Ceramic Insulators#124-TD45-87”,以下公式截取#号前面的文本“Ceramic Insulators”:

=LEFT(A1,FIND("#",A1)-1) 

=MID(A1,1,FIND("#",A1)-1) 

=REPLACE(A1,FIND("#",A1),99,)

以下公式截取#号后面的文本“124-TD45-87”:

=RIGHT(A1,LEN(A1)-FIND("#",A1)) 

=MID(A1,FIND("#",A1)+1,99) 

=REPLACE(A1,1,FIND("#",A1),)


五、利用“SEARCHB+?”,查找第1个单字节字符的起始字节位置。

假设单元格A1是文本“小明1234”,下面的公式返回5:

=SEARCHB("?",A1)

于是,我们可以对形如“双字节+单字节”的文本(比如“汉字+数字”“汉字+英文”等)进行拆分。

继续用上面的例子,以下公式截取汉字部分的“小明”:

=LEFTB(A1,SEARCHB("?",A1)-1) 

=MIDB(A1,1,SEARCHB("?",A1)-1) 

=REPLACEB(A1,SEARCHB("?",A1),99,)

以下公式截取数字部分的“1234”:

=RIGHTB(A1,LENB(A1)-SEARCHB("?",A1)+1) 

=MIDB(A1,SEARCHB("?",A1),99) 

=REPLACEB(A1,1,SEARCHB("?",A1)-1,)

上一篇博文《LEN、LENB函数详解》介绍了其他拆分“双字节+单字节”和“单字节+双字节”文本的方法。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有