前言

最近几天,两个读者群(四群、九群)都有朋友在问同一个问题:如何用公式判断字符串中是否包含指定字符。

想到这个需求在工作中还是比较常见,就抽时间总结一下。

一、用字符串查找函数

在字符串中查找的函数有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,"包含","不包含")

下面是公式的合集