【问题标题】:Excel find if string contains substring exactly onceExcel查找字符串是否恰好包含一次子字符串
【发布时间】:2021-12-05 13:26:16
【问题描述】:

我有一个包含 3 个子字符串的列表。 “苹果”、“香蕉”、“橙子” 我想知道 Cell A2 是否只包含其中一个。这意味着如果我有“Apple”,我就不能再有另一个“Apple”或 A2 中的其他子字符串之一。

任何帮助将不胜感激。

【问题讨论】:

  • 我在 B 列中用我想要实现的目标的图像编辑了我的问题
  • 可能使用如下公式:=COUNT(1/(((LEN(A1)-LEN(SUBSTITUTE(A1,{"Apple","Banana","Orange"},""))))=LEN({"Apple","Banana","Orange"})))=1
  • 嗨,它对我有用,非常简单。

标签: excel string search excel-formula substring


【解决方案1】:

这些子字符串似乎是路径中的子目录。因此,您可以尝试:

=SUMPRODUCT(--(FILTERXML("<t><s>"&SUBSTITUTE(A2,"/","</s><s>")&"</s></t>","//s")={"Apple","Banana","Orange"}))=1

【讨论】:

  • 这假定 A2 中的字符串正好包含两个“/”字符。否则 SUMPRODUCT 将尝试将包含 3 个条目的水平数组与包含其他数量条目的数组进行比较,因此会出错。
  • @JosWoolley,我假设我们在这里讨论的是子目录。所以它既不是根,也不是文件名,因此每个定义都会有两个正斜杠。顺便说一句,应该不会产生错误,如果没有匹配,则应该是“0”。如果不是这种情况,则意味着我(再次)搞砸了数组语法,分号必须用逗号替换。
  • 啊,现在我明白了。是的,我的版本使用分号作为垂直分隔符,因此出现错误。也许您应该澄清一下您打算将水果包含在水平数组中?
  • 在这种情况下,我知道我应该添加逗号而不是分号,以便大多数访问者知道他们应该选择什么 =)
  • @Rory,我第一次没有尝试过你的建议,但是当你用苹果替换苹果时,它不会算作误报。任何包含三个子字符串之一的字符串都可能是潜在的误报。
猜你喜欢
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 2019-05-25
  • 2011-11-09
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多