是否有一个内置的函数来检查单元格是否包含给定的字符/子字符串?
这意味着你可以在条件基础上应用像Left/Right/Mid这样的文本函数,而不会在没有分隔字符时抛出错误。
Left
Right
Mid
试试这个:
=ISNUMBER(SEARCH("Some Text", A3))
如果单元格A3包含Some Text,则返回TRUE。
A3
Some Text
TRUE
查看Excel中的FIND()函数。
FIND()
语法:
FIND( substring, string, [start_position])
如果没有找到子字符串,则返回#VALUE!。
#VALUE!
下面的公式确定文本“CHECK”是否出现在单元格C10中。如果没有,则结果为空白。如果是这样,结果就是工作“CHECK”。
=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")
这是我用的公式
=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )
对于那些希望在IF语句中使用单个函数来完成此操作的人,我使用
=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)
查看子字符串TEXT是否在单元格A1中
[注意:TEXT需要带星号]
这个公式对我来说更直观:
=SUBSTITUTE(A1,"SomeText","") <> A1
如果"SomeText"包含在A1中,则返回TRUE。
其他答案中提到的IsNumber/Search和IsError/Find公式当然有用,但我总是发现自己需要查看帮助或经常在Excel中试验这些公式。
我喜欢冰场。6回答。我实际上想检查多个字符串,是这样做的:
首先是这种情况:名称可以是房屋建筑商或社区名称,我需要将建筑商作为一个组。为了做到这一点,我正在寻找“建造者”或“建筑”等词。所以- - -
=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")
这是一个老问题,但对于那些使用Excel 2016或更新版本的人来说,解决方案是你可以通过使用新的IFS( condition1, return1 [,condition2, return2] ...)条件来消除嵌套if结构的需求。
IFS( condition1, return1 [,condition2, return2] ...)
我已经格式化了它,使它在视觉上更清楚地说明如何使用它来解决这个问题:
=IFS( ISERROR(SEARCH("String1",A1))=FALSE,"Something1", ISERROR(SEARCH("String2",A1))=FALSE,"Something2", ISERROR(SEARCH("String3",A1))=FALSE,"Something3" )
因为如果没有找到字符串,SEARCH将返回错误,所以我用ISERROR(...)=FALSE包装它以检查是否正确,然后返回所需的值。如果SEARCH为可读性返回0而不是错误,那就太好了,但不幸的是,它就是这样工作的。
SEARCH
ISERROR(...)=FALSE
另一个重要的注意是IFS将返回它首先找到的匹配项,因此顺序很重要。例如,如果我的字符串是Surf, Surfing, Surfs如上所述的String1,String2,String3,我的单元格字符串是Surfing,它将匹配第一项而不是第二项,因为子字符串是Surf。因此,公分母必须排在列表的最后。我的IFS需要被排序为Surfing, Surfs, Surf才能正确工作(交换Surfing和Surfs在这个简单的例子中也可以工作),但Surf需要放在最后。
IFS
Surf, Surfing, Surfs
String1,String2,String3
Surfing
Surf
Surfing, Surfs, Surf
Surfs
这是一个老问题,但我认为它仍然有效。
Public Function CONTAINS(TextString As String, SubString As String) As Integer CONTAINS = InStr(1, TextString, SubString) End Function
有趣的 *
=COUNT(MATCH("*SomeText*",A1,)) =COUNTA(VLOOKUP("*SomeText*",A1,1,)) =COUNTA(HLOOKUP("*SomeText*",A1,1,))
如果&;SomeText"包含在A1中。
为什么不简单地
COUNTIF(A1,"*xyz*")
这将搜索任何出现"xyz"A1单元格。
它返回"1"当发现时,"0"当没有发现时。
注意,搜索是不区分大小写的,所以xyz, xyz, xyz,等等中的任何一个都会被找到。它在单元格中以子字符串的形式找到这个,所以对于abcxYz,你也能找到。
如果您不想将搜索字符串写入公式本身,则可以使用
COUNTIF(A1,"*" & B1 & "*")
在B1中输入你的搜索字符串。注意,当B1为空时,公式将返回“;found"("1"),因为搜索字符串将被读取为"**"。