四时宝库

程序员的知识宝库

SEARCH函数的公式及应用案例详解

SEARCH函数是Excel表格中 文本 类别函数,作用返回查找指定的文本字符在某个字符串中的位置。

SEARCH函数属性:

语法结构

SEARCH(find_text, within_text, [start_num])

SEARCH(要查找文本字,被查找的文本字,开始位置)

find_text 必需。 要查找的文本。可以在 find_text 中使用通配符,包括问号 (?) 和星号 (*),问号可匹配任意的单个字符,星号可匹配任意一串字符。如果要查找真正的问号或星号,在该字符前键入波形符 (~)。

within_text 必需。 包含要查找文本的文本。

start_num 可选。 within_text 中开始查找的字符的编号。 如果省略 start_num,则假定其值为 1。

如果find_text中未显示within_text,则 FIND 返回#VALUE! 错误值。

如果 start_num 不大于 0(零)或大于 within_text, 返回#VALUE! 错误值。

演示示例:

SEARCH和FIND函数的区域在于,SEARCH函数在查找文本字符时不区分大小写;FIND函数需要区分大小写。

序号

文本

查找内容

SEARCH()结果

公式

FIND()结果

公式

1

Excel

E

1

=SEARCH(C2,B2)

1

=FIND(C2,B2)

2

Ppt

p

1

=SEARCH(C3,B3)

2

=FIND(C3,B3)

3

PDF

D

2

=SEARCH(C4,B4)

2

=FIND(C4,B4)

4

OFfice

f

2

=SEARCH(C5,B5)

3

=FIND(C5,B5)

案例详解:

如下图 在B列手机号码的列表中查找以18开头并以5结束的手机号。

选中C2单元格输入公式 =IFERROR(INDEX(B:B,SMALL(IFERROR(SEARCH("18*5",$B$2:$B$10)*ROW($B$2:$B$10),""),ROW(1:1))),"") 。

按ctrl+shift+enter组合键计算数组公式结果,将C2单元格公式向下填充至C10单元格中,此时C列返回的结果就是以18开头并以5结束的手机号。

案例公式解析,①其中SEARCH("18*5",$B$2:$B$10)部分,作用在查找B2:B10区域单元格中查找以18开头以5结束的电话号码;

SEARCH函数可以用通配符,*表示任意字符,?表示单一字符;

SEARCH函数省略第三参数,表示1;

如下图

②其中ROW($B$2:$B$10) 部分,作用获取一个由B2:B10区域各单元格行号组成的数组{2;3;4;5;6;7;8;9;10},如下图

ROW函数应用详解

③其中IFERROR(SEARCH("18*5",$B$2:$B$10)*ROW($B$2:$B$10),"") 部分,作用将SEARCH("18*5",$B$2:$B$10)返回的数组{1;1;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;1}和ROW($B$2:$B$10)返回的数组{2;3;4;5;6;7;8;9;10}相乘之后的返回的新数组{2;3;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;10},将其中的错误值 #VALUE! 替换为空“”,返回数字和空值组的新数组{2;3;"";"";"";"";"";"";10}。

④其中SMALL(IFERROR(SEARCH("18*5",$B$2:$B$10)*ROW($B$2:$B$10),""),ROW(1:1)) 部分,作用将IFERROR函数返回的数组{2;3;"";"";"";"";"";"";10},从小到大获取其中的数字;如下图

⑤其中INDEX(B:B,SMALL(IFERROR(SEARCH("18*5",$B$2:$B$10)*ROW($B$2:$B$10),""),ROW(1:1))) 部分,返回B列单元格中的值的引用;如下图

INDEX函数应用详解

⑥最后,在使用IFERROR函数将其中的错误值替换为空值“”,如下图

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接