2012-08-08 7 views
48

Как я могу присвоить значение ячейкам, если это сосед содержит определенную строку?Если ячейка содержит строку

Например, поля в колонке А:

dog11 
    cat22 
    cow11 
    chick11 
    duck22 
    cat11 
    horse22 
    cat33 

Синтаксис в столбце B будет:

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

Это всегда поднимает первую ИСТИНА клетку, но падает, когда значение не является правда.

ответ

102

SEARCH не return 0 Если нет совпадения, он возвращает #VALUE!. Таким образом, вы должны обменивать вызовы на SEARCH с IFERROR.

Например ...

= IF (IFERROR (SEARCH ("кошка", A1), 0), "кошка", "никто")

или

= IF (IFERROR (ПОИСК («cat», A1), 0), «cat», IF (IFERROR (SEARCH («22», A1), 0), «22», «none»))

Здесь, IFERROR возвращает значение от SEARCH, когда оно работает; заданное значение 0 в противном случае.

+1

Благодарим вас за ответ. Не могу поверить, что MS не выполняет короткий метод для обработки, например, «CONTAINS», который возвращает прямо true или false, или «INDEX», который возвращает «-1» или фактическую позицию ... – AFract

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

+0

И до тех пор, пока значение имеет одно, оно будет продолжать замыкание, если вы не конкатенируете. например '= Concatenate (IF (SEARCH (« cat », a1),« cat »,« »), IF (SEARCH (« 22 », a1),« 22 »,« »))' –

Смежные вопросы