如果一个单元格包含一个字符串
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",""))
以上是关于如果一个单元格包含一个字符串的主要内容,如果未能解决你的问题,请参考以下文章