Проверьте, содержит ли ячейка подстроку

Есть ли встроенная функция, чтобы проверить, содержит ли ячейка данный символ/подстроку?

Это означает, что вы можете применять текстовые функции, такие как Left/Right/Mid на условной основе, без ошибок при разграничении символов.

Ответ 1

Попробуйте использовать это:

=ISNUMBER(SEARCH("Some Text", A3))

Это вернет TRUE, если ячейка A3 содержит Some Text.

Ответ 2

Следующая формула определяет, появится ли в ячейке C10 текст "CHECK". Если это не так, результат будет пустым. Если это так, результатом будет работа "ПРОВЕРКА".

=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")

Ответ 3

Для тех, кто хотел бы сделать это, используя одну функцию внутри оператора IF, я использую

=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)

чтобы увидеть, находится ли подстрока TEXT в ячейке A1

[ПРИМЕЧАНИЕ: ТЕКСТ должен иметь звездочки вокруг него]

Ответ 4

Проверьте функцию FIND() в Excel.

Синтаксис:

FIND( substring, string, [start_position])

Возвращает #VALUE!, если он не находит подстроку.

Ответ 5

Эта формула кажется мне более интуитивной:

=SUBSTITUTE(A1,"SomeText","") <> A1

это возвращает TRUE, если "SomeText" содержится внутри A1.

Формулы IsNumber/Search и IsError/Find, упомянутые в других ответах, безусловно, работают, но мне всегда приходится искать помощь или экспериментировать в Excel слишком часто с этими.

Ответ 6

Мне нравится Rink.Attendant.6 ответ. Я действительно хочу проверить несколько строк и сделать это следующим образом:

Сначала ситуация: имена, которые могут быть домашними строителями или именами сообществ, и мне нужно, чтобы компоновать строителей как одну группу. Для этого я ищу слово "строитель" или "строительство" и т.д. Итак -

=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")

Ответ 7

Это старый вопрос, но решение для тех, кто использует Excel 2016 или новее, вы можете удалить необходимость в вложенных структурах, используя новый IFS( condition1, return1 [,condition2, return2] ...) условный.

Я отформатировал его, чтобы сделать его более ясным, как использовать его для случая этого вопроса:

=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1",
ISERROR(SEARCH("String2",A1))=FALSE,"Something2",
ISERROR(SEARCH("String3",A1))=FALSE,"Something3"
)

Так как SEARCH возвращает ошибку, если строка не найдена, я завернул ее с помощью ISERROR(...)=FALSE, чтобы проверить правду, а затем вернуть требуемое значение. Было бы здорово, если бы SEARCH вернул 0 вместо ошибки для удобочитаемости, но это только то, как это работает к сожалению.

Еще одна важная важность заключается в том, что IFS вернет совпадение, которое оно находит первым, и поэтому упорядочение является важным. Например, если мои строки были Surf, Surfing, Surfs как String1,String2,String3 выше, а моя строка ячеек была Surfing, она соответствовала бы первому члену вместо второго, потому что подстрока была Surf. Таким образом, общие знаменатели должны быть последними в списке. Моему IFS нужно было бы упорядочить Surfing, Surfs, Surf, чтобы работать (замена Surfing и Surfs также будет работать в этом простом примере), но Surf должен быть последним.

Ответ 8

Вот формула, которую я использую

=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )