2012-08-08 4 views
48

Come posso assegnare un valore alle celle se il suo vicino contiene una stringa specifica?SE una cella contiene una stringa

Ad esempio, i campi di colonna A:

dog11 
    cat22 
    cow11 
    chick11 
    duck22 
    cat11 
    horse22 
    cat33 

La sintassi nella colonna B sarebbero:

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

Si riprende sempre la prima cella TRUE, ma cade quando il valore non è vero.

risposta

102

SEARCH non lo fa restituire 0 se non c'è corrispondenza, restituisce #VALUE!. Quindi devi chiamare le chiamate a SEARCH con IFERROR.

Per esempio ...

= SE (SE.ERRORE (SEARCH ("cat", A1), 0), "gatto", "none")

o

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

Qui, IFERROR restituisce il valore da SEARCH quando funziona; il valore dato di 0 in caso contrario.

+1

Grazie per la risposta. Non posso credere che MS non abbia un metodo breve per gestirlo, come "CONTAINS" che restituisce direttamente true o false, o "INDEX" che restituisce "-1" o la posizione attuale ... – AFract

4

È possibile utilizzare OR() alle espressioni di gruppo (così come AND()):

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

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

Quindi, se si voleva mettere alla prova per "gatto" e "22":

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

Ehi, grazie per quello, ma spero di ottenere due risultati diversi qui. quando una stringa contiene "gatto", voglio dire "gatto" quando contiene "22", voglio dire 22. Nell'esempio del mondo reale non ci saranno sovrapposizioni. grazie – Csongor

+0

E finché il valore ne ha uno, continuerà a cortocircuitare, a meno che non si concateni. per esempio. '= Concatenate (IF (SEARCH (" cat ", a1)," cat "," "), IF (SEARCH (" 22 ", a1)," 22 "," "))' –