Google表格中“如果包含”的公式


40

我试图弄清楚如何识别IF一个单元格中包含值或字符串的项目列表。

单元格A1包含sites, sheets, docs, slides

我希望单元格B1显示1个“如果”单元格A1包含字符串sites

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

我不确定用什么替换??????上面的公式,或者如果可能的话。非常感谢任何有关如何实现预期结果的想法。

Answers:


55

您可以使用REGEXMATCH:

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

解释一下,当且仅当参数是字符串的子字符串时,REGEXMATCH才返回true。


10
使用起来regexmatch会更简单:if(regexmatch(A1, "sites"), 1, 0)

1
因为regexmatch已经返回了布尔值,所以不需要“ if”,因此只需“ REGEXMATCH(A1,“ sites”)“
David

2
如果在那里,则可以将true转换为1或0(如果为false)
Aurielle Perlmann

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

您之所以这样做,是因为您想知道其中包含“站点”一词的行数或平均行数。假设在A列中有100行条目,则可以使用此函数找出其中有“ sites”一词的行:

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

这比创建1和0的列然后在该新列上进行操作要快得多。


可以在一个框上而不是一个栏上工作吗?
亚当·斯塔吉尔

对。而不是A1:A100你可以把它A1:C100再写入与列A,B和C查询
瑞安希林

1

没有REGEX的解决方案:

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

if考虑到答案是true在找不到字符串时,大写问题和逻辑必须颠倒。


这与该答案基本相同,但介绍了区分大小写的内容。顺便说一下,OP提供的样本数据sheets不包括Sheets
鲁本


0

如果您像Ryan Shillington所建议的那样,想知道其中包含“位点”的范围内的单元格数量,则可以尝试:

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

*用作通配符概念,因此它将在单元格中的任何位置查找匹配项,而不仅仅是整个单元格的完全匹配项。

我也使用单元格引用而不是“ sites ” 来完成此操作,但是随后您必须在单元格中的文本中添加通配符-星号。


0

如果使用星号选项并需要单元格引用,则可以使用CONCATENATE函数添加星号

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.