如果一个单元格包含一个字符串

Posted

技术标签:

【中文标题】如果一个单元格包含一个字符串【英文标题】:IF a cell contains a string 【发布时间】:2012-08-05 17:39:53 【问题描述】:

如果相邻单元格包含特定字符串,我如何为单元格赋值?

例如,A列中的字段:

    dog11
    cat22
    cow11
    chick11
    duck22
    cat11
    horse22
    cat33

B 列中的语法是:

=IF(SEARCH("cat",A1),"cat",IF(SEARCH("22",A1),"22","none"))

它总是拾取第一个 TRUE 单元格,但当值不为真时下降。

【问题讨论】:

【参考方案1】:
=IFS(COUNTIF(A1,"*cats*"),"cats",COUNTIF(A1,"*22*"),"22",TRUE,"none")

【讨论】:

你能解释一下为什么你的答案比已经被接受的更好吗?【参考方案2】:

SEARCH 不返回 0 如果没有匹配,则返回 #VALUE!。所以你必须用IFERROR包装对SEARCH的调用。

例如...

=IF(IFERROR(SEARCH("cat", A1), 0), "cat", "none")

=IF(IFERROR(SEARCH("cat",A1),0),"cat",IF(IFERROR(SEARCH("22",A1),0),"22","none"))

这里,IFERROR 在工作时返回来自SEARCH 的值;否则为0 的给定值。

【讨论】:

感谢您的回答。不敢相信MS没有做一个简短的方法来处理这个问题,例如直接返回true或false的“CONTAINS”,或者返回“-1”或实际位置的“INDEX”......【参考方案3】:

您可以使用OR() 对表达式进行分组(以及AND()):

=IF(OR(condition1, condition2), true, false)

=IF(AND(condition1, condition2), true, false)

所以如果你想测试“cat”和“22”:

=IF(AND(SEARCH("cat",a1),SEARCH("22",a1)),"cat and 22","none")

【讨论】:

嘿,谢谢你,但我希望在这里得到两个不同的结果。当一个字符串包含“cat”时,我想说“cat”,当它包含“22”时,我想说22。在现实世界的例子中,不会有重叠。谢谢 并且只要值有1,就会继续短路,除非你串联。例如=Concatenate(IF(SEARCH("cat",a1),"cat",""),IF(SEARCH("22",a1),"22",""))

以上是关于如果一个单元格包含一个字符串的主要内容,如果未能解决你的问题,请参考以下文章

检查字符串是不是仅存在于前一个单元格包含 X 的列中?

表格视图单元格中的文本字段

循环遍历范围,如果单元格包含值,则复制到列中的下一个空单元格

谷歌表格,如何根据来自另一个单元格的字符串更改单元格

如果范围中的单元格包含特定文本/字符,如何连接列标题

Excel - 如果单元格包含列表中的文本,则返回另一个单元格的值