示例
单元格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。
#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)
评论
使用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