it-swarm.com.ru

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

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

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

202
geotheory

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

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

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

344
gwin003

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

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

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

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

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

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

11
dsm

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

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

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

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

9
Warren Stevens

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

Синтаксис:

FIND( substring, string, [start_position])

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

8
paras_doshi

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

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

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

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

0
Shawn