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

示例

单元格A1包含IF

我希望单元格B1显示一个'if'单元格A1包含字符串sites, sheets, docs, slides

FORMULA

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


我不确定在上述公式中替换sites的方法,或者该公式是否可行。非常感谢任何有关如何实现预期结果的想法。

#1 楼

可以使用REGEXMATCH:

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

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

评论


使用regexmatch会更简单:if(regexmatch(A1,“ sites”),1,0)。

–user79865
16年7月19日在1:09

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

–大卫
19年1月18日在17:17

如果存在,则可以将true转换为1或0(如果为false)

– Aurielle Perlmann
19年1月18日在17:18

如果参数应为分号,而不是逗号:= IF(REGEXMATCH(A1,“ sites”); 1; 0)

– EmilStenström
19/12/17在12:35

“仅当参数是字符串的子字符串时,REGEXMATCH才返回true。”这是一个极具误导性的陈述。字符串被解释为正则表达式,因此在许多情况下这是行不通的。

–AnnanFay
6月17日19:11

#2 楼

如果未找到搜索词,则返回#VALUE!错误: >
=IF(SEARCH("sites", B2) > 0, 1, 0)


评论


第一个公式永远不会返回0,因为当未找到search_for时,SEARCH(search_for,text_to_search,[starting_at])将返回错误。

–鲁本♦
16年7月15日在23:05

如何在COUNTIF中使用搜索?

–亚伦·弗兰克(Aaron Franke)
2月8日,0:10

#3 楼

如果您像Ryan Shillington所建议的那样,想知道其中包含“位点”的范围内的单元格数量,则可以尝试:
作为通配符概念,因此它将在单元格中的任何位置查找匹配项,而不仅仅是整个单元格的完全匹配项。

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

评论


我尚未测试过,但是我希望您可以通过= COUNTIF(A1:A100; CONCATENATE(“ *”,B1,“ *”))在引用单元格时在公式中添加星号

–马修
12月17日18:43

#4 楼

没有REGEX的解决方案:

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


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

评论


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

–鲁本♦
19年1月16日在19:04



#5 楼

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

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


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

评论


可以在一个框上而不是一个栏上工作吗?

–亚当·斯塔斯塔(Adam Starrh)
19年9月11日在18:53

对。您可以将其设置为A1:C100而不是A1:A100,然后使用A,B和C列编写查询。

– Ryan Shillington
19年9月11日19:30在

#6 楼

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

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

#7 楼

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




#8 楼

这将返回TRUE或FALSE:

=IFERROR(SEARCH("keyword",A1)>0, FALSE)