2012-08-08 39 views
48

Komşu belirli bir dizgi içeriyorsa hücrelere nasıl bir değer atayabilirim? ÖrneğinHücre bir dizgi içeriyorsa

, A sütununda alanlar:

dog11 
    cat22 
    cow11 
    chick11 
    duck22 
    cat11 
    horse22 
    cat33 

B sütununda sözdizimi olacaktır:

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

her zaman ilk gerçek hücre alır, ancak damla değeri değil iken doğru.

cevap

102

SEARCH değil Eşleşme yoksa 0 döndürür, #VALUE! döndürür. Yani IFERROR ile SEARCH numaralarına telefon etmek zorundasınız. Örneğin

...

= EĞER (IFERROR (SEARCH ("kedi", A1), 0), "kedi", "yok")

veya

= IF (IFERROR (SEARCH ("kedi", A1), 0), "cat", IF (IFERROR (ARAMA ("22", A1), 0), "22", "yok"))

Burada, IFERROR, çalışırken SEARCH değerini döndürür; aksi halde 0 verilen değer.

+1

Cevabınız için teşekkür ederiz. MS'nin doğrudan doğru veya yanlış döndüren "CONTAINS" veya "-1" veya gerçek pozisyonu döndüren "INDEX" gibi işlemek için kısa bir yöntem yapmadığına inanamıyorum ... – AFract

4

Sen grup ifadelerine OR() (yanı sıra AND()) kullanabilirsiniz: Yani

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

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

Eğer "kedi" ve "22" için test etmek istiyorsa:

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

Hey, bunun için teşekkürler, ama burada iki farklı sonuç elde etmeyi umuyorum. Bir dize "kedi" içeriyorsa, "22" içerdiğinde "kedi" demek istiyorum. 22 söylemek istiyorum. Gerçek dünya örneğinde hiçbir çakışma olmayacak. teşekkürler – Csongor

+0

Ve değer bir olduğu sürece, siz bitmezseniz, kısa devreye devam edecektir. Örneğin. '= Concatenate (IF (SEARCH (" cat ", a1)," cat "," "), IF (SEARCH (" 22 ", a1)," 22 "," ")) –