Перевірте, чи містить комірка підрядку


229

Чи є вбудована функція, щоб перевірити, чи містить комірка заданий символ / підрядку?

Це означатиме, що ви можете застосовувати текстові функції на кшталт Left// Right/ Midна умовних засадах, не кидаючи помилок, коли відмінні символи відсутні.

Відповіді:


374

Спробуйте скористатися цим:

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

Це повернеться, TRUEякщо комірка A3містить Some Text.


7
Хитрий! Дякую gwin003 :) Я все ще трохи здивований, що для цього немає інтуїтивнішої функції.
геотеорія

18
Так, я згоден, було б добре, якби була CONTAINS("Text", cell)функція.
gwin003

20
Можливо, варто відзначити, що це я нечутливий до випадку, і якщо ви хочете відповідати випадку, вам слід скористатися FIND()замістьSEARCH()
Code Jockey

7
виникла помилка, використовуючи ,замість ;. Після зміни наданої формули до =ISNUMBER(SEARCH("Some Text"; A3))неї спрацювало. Дякую!
ренатов

6
@renatov, що насправді залежить від місцевості вашої ОС; конкретно, символ, який використовується для "роздільника списку".
pepoluan

22

Наступна формула визначає, чи з'являється текст "ПЕРЕВІРИТИСЯ" у комірці С10. Якщо цього немає, результат порожній. Якщо це так, результат - робота "ПЕРЕВІРИТЬ".

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

Для виділення блоку коду можна використовувати 4 пробіли або вкладку на початку рядка.
NiematojakTomasz

@Steve, ДЯКУЙТЕ;)
Димитрій

12

Ця формула здається мені більш інтуїтивно зрозумілою:

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

це повертає TRUE, якщо "SomeText" міститься в межах A1.

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


12

Для тих, хто хотів би зробити це за допомогою однієї функції всередині оператора IF, я використовую

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

щоб побачити, чи знаходиться підрядка TEXT у комірці A1

[ПРИМІТКА: TEXT повинен мати навколо себе зірочки]


Це працює, але використання формули COUNTIF, коли величезні дані, змушує файл не реагувати, навіть розмір файлу стає величезним
Gaurravs

8

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

Синтаксис:

FIND( substring, string, [start_position])

Повертається, #VALUE!якщо він не знайде підрядку.


Так, вкладене в ISNUMBERце також працює, лише для чутливих до регістрів матчів.
геотеорія

1

Мені подобається відповідь Rink.Atetendant.6. Я дійсно хочу перевірити наявність декількох рядків і зробив це так:

По-перше, ситуація: імена, які можуть бути домашніми або громадськими іменами, і мені потрібно з’єднати будівельників як одну групу. Для цього я шукаю слово "будівельник" або "будівництво" тощо. Отже -

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

Ласкаво просимо до SO. Вам слід прочитати про те, що дає хорошу відповідь .
геотеорія

Я не розумію, що це мається робити .. він перевіряє будівельника двічі, коли, мабуть, одного разу вистачить. Якщо він знайде будівельника, він повертає builder, інакше він повертає спільноту. Слово конструкція ніде не з’являється. Можливо, щось на кшталт =OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*construction*"))?
фантастичний

Є COUNTIFS:COUNTIFS(A1,"*builder*",A1,"*construction*")
vstepaniuk

1

Це давнє запитання, але я думаю, що воно все ще діє.

Оскільки немає функції CONTAINS, чому б не оголосити її у VBA? У наведеному нижче коді використовується функція Instr VBA, яка шукає підрядку в рядку. Він повертає 0, коли рядок не знайдено.

Public Function CONTAINS(TextString As String, SubString As String) As Integer
    CONTAINS = InStr(1, TextString, SubString)
End Function

Хороший спосіб покращити особисту ефективність, але ціною відтворюваності я б сказав :)
geotheory

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він повинен бути останнім.


більшість захоче, якщо / else здатність, іншими словами значення за замовчуванням. Додавання цієї цитати може розширити звернення вашої відповіді: "Немає способу встановити за замовчуванням, якщо всі тести повернуть FALSE (тобто значення, якщо false). Натомість введіть TRUE для останнього тесту, а потім значення, яке потрібно повернути як a значення за замовчуванням, якщо FALSE "
Whitneyland

-3

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

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


Це перевіряє, чи "". включається в A1, і якщо він є, він повертає ... кількість символів, що залишилися в A1, починаючи з ".". Не впевнений, чи доречний цей додатковий розрахунок.
Бекон "Ех"

Найменше, використовуйтеIFERROR(LEN(A1) - FIND(".", A1), 0)
Nigel Touch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.