244

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

这意味着您可以在不存在分隔字符时有条件地应用Left/ Right/之类的文本函数,而不会引发错误。Mid

4

11 回答 11

393

尝试使用这个:

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

TRUE如果单元格A3包含,这将返回Some Text

于 2013-09-04T14:57:57.683 回答
26

以下公式确定文本“检查”是否出现在单元格 C10 中。如果不是,则结果为空白。如果是这样,结果就是工作“检查”。

=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")
于 2015-01-11T02:00:11.710 回答
15

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

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

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

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

于 2016-02-08T22:16:32.773 回答
15

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

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

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

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

于 2016-03-07T14:39:49.753 回答
8

查看FIND()Excel 中的函数。

句法:

FIND( substring, string, [start_position])

#VALUE!如果没有找到子字符串则返回。

于 2014-12-20T08:53:22.433 回答
3

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

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

Public Function CONTAINS(TextString As String, SubString As String) As Integer
    CONTAINS = InStr(1, TextString, SubString)
End Function
于 2020-06-17T07:20:23.520 回答
2

我喜欢 Rink.Attendant.6 的回答。我实际上想检查多个字符串并这样做:

第一种情况:可以是家庭建设者或社区名称的名称,我需要将建设者作为一个组进行存储。为此,我正在寻找“builder”或“construction”等词。所以 -

=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")
于 2016-03-23T03:03:38.200 回答
1

IFS( condition1, return1 [,condition2, return2] ...)这是一个老问题,但对于那些使用 Excel 2016 或更新版本的人来说,一个解决方案是您可以通过使用新的条件来消除对嵌套 if 结构的需求。

我已经对其进行了格式化,以便在此问题的情况下如何使用它在视觉上更清晰:

=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1",
ISERROR(SEARCH("String2",A1))=FALSE,"Something2",
ISERROR(SEARCH("String3",A1))=FALSE,"Something3"
)

因为SEARCH如果找不到字符串会返回错误,我用 an 包裹它ISERROR(...)=FALSE以检查真实性,然后返回所需的值。如果SEARCH返回 0 而不是可读性错误,那就太好了,但不幸的是,这就是它的工作原理。

另一个重要的注意事项是IFS它将返回它首先找到的匹配项,因此排序很重要。例如,如果我的字符串Surf, Surfing, Surfs如上String1,String2,String3所示,而我的单元格字符串是Surfing,它将匹配第一个术语而不是第二个术语,因为子字符串是Surf. 因此,公分母需要排在列表的最后。我IFS需要被命令Surfing, Surfs, Surf正常工作(交换Surfing并且Surfs在这个简单的例子中也可以工作),但Surf需要最后一个。

于 2017-11-14T18:24:42.527 回答
1

为什么不简单

COUNTIF(A1,"*xyz*")

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

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

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

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

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

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

于 2021-05-13T21:06:15.707 回答
0

有趣*

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

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

于 2021-03-17T06:09:31.860 回答
-3

这是我正在使用的公式

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

于 2015-10-15T14:14:42.930 回答