2013-09-04 2 views
177

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

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

ответ

303

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

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

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

+7

Хитрость! Спасибо gwin003 :) Я все еще немного удивлен, что для этого нет более интуитивной функции. – geotheory

+15

Да, я согласен, было бы неплохо, если бы была функция 'CONTAINS (« Текст », ячейка). – gwin003

+2

Что-то я застрял вначале: вам действительно нужно использовать 'ISNUMBER', а также' SEARCH'. Я использовал это внутри 'IF' и придумал:' = IF (ISNUMBER (SEARCH ($ G $ 1, A73)), A73, B73) ' – Matthew

6

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

Синтаксис:

FIND(substring, string, [start_position]) 

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

+0

Да, вложенный в 'ISNUMBER', это также работает, только для ответов на случай. – geotheory

17

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

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

Вы можете использовать 4 пробела или вкладку в начале строки, чтобы выделить код – NiematojakTomasz

-2

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

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

+0

Это проверяет, включено ли «.» В A1, и если оно есть, оно возвращает ... количество символов, оставшихся в A1, начиная с «.». Не уверен, что этот дополнительный расчет имеет значение здесь. –

9

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

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

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

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

6

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

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

это возвращает TRUE, если «SOMETEXT» содержится в A1.

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

1

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

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

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

Добро пожаловать в SO. Вы должны прочитать, что делает [хороший ответ] (https://stackoverflow.com/help/how-to-answer). – geotheory

+0

Я не понимаю, что это значит делать. Он дважды проверяет строителя, когда, предположительно, его хватит. Если он находит построитель, он возвращает построитель, иначе он возвращает сообщество. Конструкция слова нигде не появляется. Возможно, что-то вроде '= OR (COUNTIF (A1, * * builder *"), COUNTIF (A1, "* construction *")) '? – fantabolous

0

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

Смежные вопросы