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 | 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},如下图
③其中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列单元格中的值的引用;如下图
⑥最后,在使用IFERROR函数将其中的错误值替换为空值“”,如下图