2012-08-08 145 views
48

如果它的邻居包含特定的字符串,如何为单元格赋值?如果一个单元格包含一个字符串

例如,在列A字段:

dog11 
    cat22 
    cow11 
    chick11 
    duck22 
    cat11 
    horse22 
    cat33 

在塔B的语法是:

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

它总是拿起第一TRUE细胞,但下降时的值不真正。

回答

102

SEARCH不返回0如果不匹配,则返回#VALUE!。因此,您必须使用IFERROR将呼叫打包为SEARCH

例如...

= IF(IFERROR(SEARCH( “猫”,A1),0), “猫”, “无”)

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

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

+1

谢谢你的回答。不能相信MS没有做一个简短的方法来处理这个问题,比如“CONTAINS”直接返回true或false,或者“INDEX”返回“-1”或者实际位置...... – AFract 2016-03-31 16:42:27

4

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

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

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

所以如果你想考 “猫” 和 “22”:

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

嘿,谢谢你,但我希望能在这里得到两个不同的结果。当一个字符串包含“猫”时,我想说“猫”,当它包含“22”我想说22.在现实世界的例子中,将不会有重叠。谢谢 – Csongor 2012-08-08 15:11:02

+0

只要值有一个,它就会继续短路,除非你连接在一起。例如'=连结(IF(SEARCH(“cat”,a1),“cat”,“”),IF(SEARCH(“22”,a1),“22”,“”))' – 2012-08-08 15:25:57

相关问题