Формула Google Sheets для «если содержит»

40

Я пытаюсь выяснить, как определить IFсписок элементов в одной ячейке содержит значение или строку.

ПРИМЕР

Ячейка А1 содержит sites, sheets, docs, slides.

Я хочу, чтобы ячейка B1 отображала 1 ', если' ячейка A1 содержит строку sites.

ФОРМУЛА

=if(A1 ?????? "sites", 1,0)

Я не уверен, что заменить ??????в приведенной выше формуле ИЛИ, если эта формула возможна. Любые идеи о том, как достичь желаемого результата, с благодарностью.

Мистер Б
источник

Ответы:

55

Вы можете использовать REGEXMATCH:

=IF(REGEXMATCH(A1, "sites"), 1, 0)

Для объяснения, REGEXMATCH возвращает true тогда и только тогда, когда аргумент является подстрокой вашей строки.

Ауриэль Перлманн
источник
10
Использование regexmatchбыло бы проще: if(regexmatch(A1, "sites"), 1, 0).
1
«Если» не требуется, так как регулярное выражение уже возвращает логическое значение, поэтому просто «REGEXMATCH (A1,« sites »)»
Дэвид
2
Если есть, они могут преобразовать истину в 1 или 0, если ложь
Ауриэль Перлманн
7

=if(search("sites",B2)>0,1,0)

=if(IFERROR(search("sites",B2)>0,0),1,0)

Оба работают. Второй пишет 0, если есть ошибка.

Том Вудворд
источник
2
Первая формула никогда не вернет 0, потому SEARCH(search_for, text_to_search, [starting_at])что вернет ошибку, когда search_forне найдена.
Рубен
1

Вы, вероятно, делаете это, потому что хотите знать количество или среднее количество строк, в которых есть слово «сайты». Предполагая, что у вас есть 100 строк записей в столбце A, вы можете использовать эту функцию, чтобы узнать, сколько строк содержит слово «sites»:

=QUERY(A1:A100, "select count(A) where A like '%sites%'")

Это гораздо быстрее, чем создать столбец с единицами и нулями и затем работать с этим новым столбцом.

Райан Шиллингтон
источник
Может ли это работать над окном, а не над столбцом?
Адам Старр
Ага. вместо того, A1:A100чтобы сделать это, A1:C100а затем написать запрос со столбцами A, B и C.
Райан Шиллингтон
1

Решение без REGEX:

=if(iserror(FIND("sites",B2)),0,1)

вопросы заглавных букв и ifлогика должны быть обращены вспять, учитывая, что ответ - trueкогда строка не найдена.

Адрия
источник
По сути, это то же самое, что и этот ответ , но вводится с учетом регистра. Кстати, пример данных, предоставленных ОП, sheetsне включает Sheets.
Рубен
0

=IF(QUERY(A1, "where A contains 'sites'")<>"", 1, )

0

Пользователь0
источник
0

Если вы, как предполагает Райан Шиллингтон, хотите узнать количество ячеек в диапазоне, в котором есть «сайты», вы можете попробовать:

=COUNTIF(A1:A100;"*sites*") 

Знак * действует как подстановочный знак, поэтому он будет искать совпадение в любом месте ячейки, а не только точное совпадение для всей ячейки.

Я также сделал это с помощью ссылки на ячейку вместо « сайтов », но затем вы должны добавить подстановочные знаки-звездочки в текст в ячейке.

Хайди
источник
0

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

=COUNTIF(A1:A100,CONCATENATE("*",A1,"*"))

арх
источник