是否有一个内置的函数来检查单元格是否包含给定的字符/子字符串?

这意味着您可以在条件基础上应用Left/Right/Mid等文本函数,而不会在没有分隔字符时抛出错误。


试试这个:

=ISNUMBER(SEARCH("Some Text", A3))

如果单元格A3包含一些文本,则返回TRUE。


查看Excel中的FIND()函数。

语法:

FIND( substring, string, [start_position])

#返回值!如果它没有找到子字符串。


下面的公式确定文本“CHECK”是否出现在单元格C10中。如果没有,则结果为空白。如果是这样,结果就是工作“CHECK”。

=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")

这是我用的公式

=如果(ISNUMBER(找到(“。”,A1)), LEN (A1)——找到(“。”,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, returnn1 [,condition2, return2]…)条件来消除嵌套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而不是错误,那就太好了,但不幸的是,这就是它的工作方式。

Another note of importance is that IFS will return the match that it finds first and thus ordering is important. For example if my strings were Surf, Surfing, Surfs as String1,String2,String3 above and my cells string was Surfing it would match on the first term instead of the second because of the substring being Surf. Thus common denominators need to be last in the list. My IFS would need to be ordered Surfing, Surfs, Surf to work correctly (swapping Surfing and Surfs would also work in this simple example), but Surf would need to be last.


这是一个老问题,但我认为它仍然有效。

既然没有CONTAINS函数,为什么不在VBA中声明它呢? 下面的代码使用VBA Instr函数,它在字符串中查找子字符串。如果没有找到该字符串,则返回0。

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中,则返回1。


为什么不简单地

COUNTIF(A1,"*xyz*")

这将搜索单元格A1中出现的任何“xyz”。

找到时返回“1”,找不到时返回“0”。

注意,搜索是不区分大小写的,所以xyz, xyz, xyz,等等中的任何一个都会被找到。它在单元格中以子字符串的形式找到这个,所以对于abcxYz,你也能找到。

如果您不想将搜索字符串写入公式本身,则可以使用

COUNTIF(A1,"*" & B1 & "*")

在B1中输入你的搜索字符串。-注意,当B1为空时,公式将返回“found”(“1”),因为搜索字符串将被读取为“**”。