2012-08-08 26 views
48

¿Cómo puedo asignar un valor a las celdas si su vecino contiene una cadena específica?SI una celda contiene una cadena

Por ejemplo, los campos en la columna A:

dog11 
    cat22 
    cow11 
    chick11 
    duck22 
    cat11 
    horse22 
    cat33 

La sintaxis en la columna B sería:

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

Siempre recoge la primera celda TRUE, pero disminuye cuando el valor no es cierto.

Respuesta

102

SEARCH no lo hace devuelva 0 si no hay coincidencia, devuelve #VALUE!. Por lo tanto, debe envolver las llamadas al SEARCH con IFERROR.

Por ejemplo ...

= SI (SI.ERROR (SEARCH ("gato", A1), 0), "gato", "ninguno")

o

= IF (IFERROR (SEARCH ("cat", A1), 0), "cat", IF (IFERROR (BÚSQUEDA ("22", A1), 0), "22", "ninguno"))

Aquí, IFERROR devuelve el valor de SEARCH cuando funciona; el valor dado de 0 de lo contrario.

+1

Gracias por la respuesta. No puedo creer que MS no haya hecho un método corto para manejar esto, como "CONTIENE" que devuelve verdadero o falso directamente, o "INDICE" que devuelve "-1" o la posición real ... – AFract

4

Puede utilizar OR() para agrupar expresiones (así como AND()):

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

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

Así que si quería probar para "gato" y "22":

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

Oye, gracias por eso, pero espero obtener dos resultados diferentes aquí. cuando una cadena contiene "gato", quiero decir "gato" cuando contiene "22", quiero decir 22. En el ejemplo del mundo real, no habrá superposición. gracias – Csongor

+0

Y mientras el valor tenga uno, continuará en cortocircuito, a menos que concatene. p.ej. '= Concatenar (IF (SEARCH (" cat ", a1)," cat "," "), IF (SEARCH (" 22 ", a1)," 22 "," "))' –

Cuestiones relacionadas