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


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

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

8 193

8 ответов:

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

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

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

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

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

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

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

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

[Примечание: текст должен иметь звездочки вокруг него]

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

синтаксис:

FIND( substring, string, [start_position])

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

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

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

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

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

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

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

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

это старый вопрос, но решение для тех, кто использует Excel 2016 или новее, вы можете удалить необходимость вложенных структур if с помощью нового 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 должен быть последним.

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

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