检查单元格是否包含子字符串

时间:2013-09-04 14:55:23

标签: excel excel-formula

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

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

11 个答案:

答案 0 :(得分:353)

尝试使用:

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

如果单元格TRUE包含A3,则会返回Some Text

答案 1 :(得分:20)

以下公式确定单元格C10中是否显示“CHECK”文本。如果没有,结果为空。如果是,结果是工作“检查”。

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

答案 2 :(得分:12)

对于那些想在IF语句中使用单个函数执行此操作的人,我使用

=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)

查看子字符串TEXT是否在单元格A1中

[注意:文本周围需要有星号]

答案 3 :(得分:10)

这个公式对我来说似乎更直观:

=SUBSTITUTE(A1,"SomeText","") <> A1

如果&#34; SomeText&#34;则返回TRUE。包含在A1中。

其他答案中提到的IsNumber / Search和IsError / Find公式确实有效,但我总是发现自己需要经常查看帮助或在Excel中进行实验。

答案 4 :(得分:8)

在Excel中查看FIND()功能。

语法:

FIND( substring, string, [start_position])

如果找不到子字符串,则返回#VALUE!

答案 5 :(得分:1)

我喜欢Rink.Attendant.6回答。我实际上想要检查多个字符串并以这种方式执行:

首先是这种情况:可以是住宅建筑商或社区名称的名称,我需要将构建器作为一个组进行分组。要做到这一点,我正在寻找&#34; builder&#34;或&#34;建筑&#34;等等 -

=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")

答案 6 :(得分:1)

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

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

Public Function CONTAINS(TextString As String, SubString As String) As Integer
    CONTAINS = InStr(1, TextString, SubString)
End Function

答案 7 :(得分:0)

这是一个老问题,但对于那些使用Excel 2016或更新版本的人来说,您可以通过使用新的IFS( condition1, return1 [,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而不是出于可读性的错误,那将是很棒的,但这就是它的工作原理。

另一个重要的注意事项是IFS将返回它首先找到的匹配,因此排序很重要。例如,如果我的字符串Surf, Surfing, SurfsString1,String2,String3,而我的单元格字符串为Surfing,则由于子字符串为Surf,因此它将匹配第一个字词而不是第二个字词。因此,共同的分母需要在列表中排在最后。我的IFS需要排序Surfing, Surfs, Surf才能正常工作(交换SurfingSurfs也适用于这个简单示例),但Surf需要是最后一次。

答案 8 :(得分:0)

有趣 *

=COUNT(MATCH("*SomeText*",A1,))
=COUNTA(VLOOKUP("*SomeText*",A1,1,))
=COUNTA(HLOOKUP("*SomeText*",A1,1,))

如果“SomeText”包含在 A1 中,则返回 1。

答案 9 :(得分:0)

为什么不简单

COUNTIF(A1,"*xyz*")

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

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

注意,搜索不区分大小写,所以会找到xyz、XYZ、XyZ等中的任何一个。它发现这是单元格中的子字符串,因此对于 abcxYz,您也会得到成功。

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

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

然后在 B1 中输入您的搜索字符串。 - 注意,当 B1 为空时,公式将返回“找到”(“1”)作为搜索字符串然后读取为“**”。

答案 10 :(得分:-2)

这是我正在使用的公式

=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )