Формула 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

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

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

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

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


0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.