前言
最近几天,两个读者群(四群、九群)都有朋友在问同一个问题:如何用公式判断字符串中是否包含指定字符。
想到这个需求在工作中还是比较常见,就抽时间总结一下。
一、用字符串查找函数
在字符串中查找的函数有FIND、SEARCH,两者的区别是:
FIND函数区分大小写,但不支持通配符
SEARCH函数则不区分大小写,但支持通配符
另外,在IF函数中,会将非零的数字当做TRUE,
因而,可以直接在IF的第一参数使用FIND函数。用FIND结合IF函数来判断是否包含:
=IF(FIND("偷懒",B3),"包含","不包含")
如果字符串中没有指定字符时,上面的公式会出错,因为需要用IFERROR完善一下:
=IFERROR(IF(FIND("偷懒",B3),"包含"),"不包含")
公式中的FIND也可用SEARCH代替:
=IFERROR(IF(SEARCH("偷懒",B3),"包含"),"不包含")
另外,COUNT函数是统计数字的个数,它会忽略错误值和文本,所以也可用COUNT函数来处理错误值:
=IF(COUNT(FIND("偷懒",B6)),"包含","不包含")
二、用单元格间的查找函数
MATCH是查找指定项的物理位置是第几个。
VLOOKUP则是查找指定项,然后返回对应列的值。
两个函数都可使用通配符。
公式:
=IFERROR(IF(MATCH("*偷懒*",B9,0),"包含"),"不包含")
或
=IF(ISNA(VLOOKUP("*偷懒*",B12,1,0)),"不包含","包含")
三、使用统计个数的COUNIF函数
公式:
=IF(COUNTIF(B15,"*偷懒*"),"包含","不包含")
四、将指定字符删除然后与原字符相比较
用SUBSTITUTE函数将指定字符删除,然后与原字符串比较。如果没包含指定字符,那么字符串不会变化,否则就会变化(两者不等,表明包含指定字符)
=IF(SUBSTITUTE(B18,"偷懒","")<>B18,"包含","不包含")
下面是公式的合集