Ответы:
Попробуйте использовать это:
=ISNUMBER(SEARCH("Some Text", A3))
Это вернется, TRUE
если ячейка A3
содержит Some Text
.
CONTAINS("Text", cell)
функция.
FIND()
вместоSEARCH()
,
вместо ;
. После изменения предоставленной формулы к =ISNUMBER(SEARCH("Some Text"; A3))
нему сработало. Спасибо!
Следующая формула определяет, появляется ли текст «ПРОВЕРКА» в ячейке C10. Если это не так, результат будет пустым. Если это так, результатом является работа «ПРОВЕРКА».
=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")
Эта формула кажется мне более понятной:
=SUBSTITUTE(A1,"SomeText","") <> A1
это возвращает TRUE, если "SomeText" содержится в A1.
Формулы IsNumber / Search и IsError / Find, упомянутые в других ответах, безусловно, работают, но мне всегда приходится обращать внимание на помощь или слишком часто экспериментировать с Excel.
Для тех, кто хотел бы сделать это, используя единственную функцию внутри оператора IF, я использую
=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)
чтобы увидеть, находится ли подстрока TEXT в ячейке A1
[ПРИМЕЧАНИЕ: ТЕКСТ должен иметь звездочки вокруг него]
Проверьте FIND()
функцию в Excel.
Синтаксис:
FIND( substring, string, [start_position])
Возвращает, #VALUE!
если не находит подстроку.
ISNUMBER
это также работает, только для чувствительных к регистру совпадений.
Мне нравится Rink.Attendant.6 ответ. Я на самом деле хочу проверить наличие нескольких строк и сделал это следующим образом:
Сначала ситуация: имена, которые могут быть домостроителями или названиями сообществ, и мне нужно объединить строителей в одну группу. Для этого я ищу слово «строитель» или «строительство» и т. Д. Итак -
=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")
=OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*construction*"))
?
COUNTIFS
:COUNTIFS(A1,"*builder*",A1,"*construction*")
Это старый вопрос, но я думаю, что он все еще актуален.
Поскольку нет функции CONTAINS, почему бы не объявить ее в VBA? В приведенном ниже коде используется функция VBA Instr, которая ищет подстроку в строке. Возвращает 0, когда строка не найдена.
Public Function CONTAINS(TextString As String, SubString As String) As Integer
CONTAINS = InStr(1, TextString, SubString)
End Function
Это старый вопрос, но решение для тех, кто использует 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
. Таким образом, общие знаменатели должны быть последними в списке. My IFS
нужно было бы приказать, Surfing, Surfs, Surf
чтобы он работал правильно (поменялся местами Surfing
и Surfs
также работал бы в этом простом примере), но Surf
должен быть последним.
Вот формула, которую я использую
=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )
IFERROR(LEN(A1) - FIND(".", A1), 0)