是否有内置函数来检查单元格是否包含给定字符/子字符串?这意味着您可以有条件地应用文本函数(如Left
/ Right
/Mid
),而不会在缺少分隔符字符时引发错误。
是否有内置函数来检查单元格是否包含给定字符/子字符串?这意味着您可以有条件地应用文本函数(如Left
/ Right
/Mid
),而不会在缺少分隔符字符时引发错误。
试试使用这个:
=ISNUMBER(SEARCH("Some Text", A3))
如果单元格A3
包含Some Text
,则此公式将返回TRUE
。
下面的公式用于确定文本“CHECK”是否出现在单元格C10中。如果没有出现,则结果为空白。如果出现,则结果是“CHECK”。
=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")
如果想在IF语句内使用单个函数完成此操作,我会使用
=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)
查看单元格A1中是否包含子字符串TEXT
[注:TEXT需要用星号括起来]
这个公式对我来说更加直观:
=SUBSTITUTE(A1,"SomeText","") <> A1
如果A1中包含"SomeText",则此公式返回TRUE。
其他答案中提到的IsNumber/Search和IsError/Find公式确实有效,但我经常发现自己需要查看帮助文件或在Excel中进行实验。
FIND()
函数。FIND( substring, string, [start_position])
#VALUE!
。ISNUMBER
中也可以工作,仅适用于区分大小写的匹配。 - geotheory这是一个老问题,但我认为它仍然有效。
既然没有CONTAINS函数,为什么不在VBA中声明它呢? 下面的代码使用VBA的Instr函数,在字符串中查找子串。当字符串未被找到时,它返回0。
Public Function CONTAINS(TextString As String, SubString As String) As Integer
CONTAINS = InStr(1, TextString, SubString)
End Function
COUNTIF(A1,"*xyz*")
这会在A1单元格中搜索任何出现的“xyz”。
当找到时,它返回“1”,未找到时返回“0”。
请注意,搜索区分大小写,因此任何形式的xyz,XYZ,XyZ等都可以找到。它将其作为单元格中的子字符串查找,因此即使是abcxYz也会被匹配。
如果您不想在公式中编写搜索字符串,则可以使用
COUNTIF(A1,"*" & B1 & "*")
在B1单元格中输入搜索字符串。注意,当B1为空时,公式会返回“found”(“1”),因为此时搜索字符串被读取为“**”。
我很喜欢Rink.Attendant.6的回答。我实际上想检查多个字符串,并以以下方式执行:
首先,情况是这样的:可以是房屋建筑商或社区名称的名称,我需要将建筑商分为一组。 为此,我正在寻找单词“builder”或“construction”等。 所以 -
=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")
=OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*construction*"))
的方式来解决问题? - fantabolousCOUNTIFS
: COUNTIFS(A1,"*builder*",A1,"*construction*")
。 - vstepaniuk这是一个老问题,但对于使用Excel 2016或更新版本的人来说,可以通过使用新的IFS(条件1, 返回1 [,条件2, 返回2] ...)
条件语句来消除嵌套if结构的需要。
我已经格式化了它,以便在本问题的情况下更清晰地说明如何使用它:
=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1",
ISERROR(SEARCH("String2",A1))=FALSE,"Something2",
ISERROR(SEARCH("String3",A1))=FALSE,"Something3"
)
由于SEARCH
在未找到字符串时会返回错误,因此我用ISERROR(...)=FALSE
将其包装起来以检查真假,然后返回所需的值。如果SEARCH
返回0而不是错误以提高可读性,那就太好了,但不幸的是它就是这样工作的。
另一个重要的注意点是,IFS
将返回它首先找到的匹配项,因此顺序很重要。例如,如果我的字符串为Surf,Surfing,Surfs
,如上所示的String1,String2,String3
,并且我的单元格字符串为Surfing
,它将匹配第一个术语而不是第二个,因为子字符串是Surf
。因此,共同的分母需要排在列表的最后。我的IFS
需要按正确顺序排列Surfing,Surfs,Surf
才能正常工作(在这个简单的例子中交换Surfing
和Surfs
也可以),但Surf
需要排在最后。
有趣 *
=COUNT(MATCH("*SomeText*",A1,))
=COUNTA(VLOOKUP("*SomeText*",A1,1,))
=COUNTA(HLOOKUP("*SomeText*",A1,1,))
如果A1中包含"SomeText",则返回1。
>0
以返回一个布尔值。 - BigBen
CONTAINS("文本", 单元格)
函数会很不错。 - gwin003FIND()
替换SEARCH()
。 - Code Jockey=ISNUMBER(SEARCH("Some Text"; A3))
后,它可以正常工作。谢谢! - renatov