Есть ли встроенная функция, чтобы проверить, содержит ли ячейка данный символ/подстроку?
Это означает, что вы можете применять текстовые функции, такие как Left
/Right
/Mid
на условной основе, без ошибок при разграничении символов.
Есть ли встроенная функция, чтобы проверить, содержит ли ячейка данный символ/подстроку?
Это означает, что вы можете применять текстовые функции, такие как Left
/Right
/Mid
на условной основе, без ошибок при разграничении символов.
Попробуйте использовать это:
=ISNUMBER(SEARCH("Some Text", A3))
Это вернет TRUE
, если ячейка A3
содержит Some Text
.
Следующая формула определяет, появится ли в ячейке C10 текст "CHECK". Если это не так, результат будет пустым. Если это так, результатом будет работа "ПРОВЕРКА".
=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")
Для тех, кто хотел бы сделать это, используя одну функцию внутри оператора IF, я использую
=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)
чтобы увидеть, находится ли подстрока TEXT в ячейке A1
[ПРИМЕЧАНИЕ: ТЕКСТ должен иметь звездочки вокруг него]
Проверьте функцию FIND()
в Excel.
Синтаксис:
FIND( substring, string, [start_position])
Возвращает #VALUE!
, если он не находит подстроку.
Эта формула кажется мне более интуитивной:
=SUBSTITUTE(A1,"SomeText","") <> A1
это возвращает TRUE, если "SomeText" содержится внутри A1.
Формулы IsNumber/Search и IsError/Find, упомянутые в других ответах, безусловно, работают, но мне всегда приходится искать помощь или экспериментировать в Excel слишком часто с этими.
Мне нравится Rink.Attendant.6 ответ. Я действительно хочу проверить несколько строк и сделать это следующим образом:
Сначала ситуация: имена, которые могут быть домашними строителями или именами сообществ, и мне нужно, чтобы компоновать строителей как одну группу. Для этого я ищу слово "строитель" или "строительство" и т.д. Итак -
=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")
Это старый вопрос, но решение для тех, кто использует 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
должен быть последним.
Вот формула, которую я использую
=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )