【问题标题】:Find exact substring in cell using excel formula使用excel公式在单元格中查找确切的子字符串
【发布时间】:2020-05-30 12:29:59
【问题描述】:

我在一个单元格中有字符串“L5+L6+L7+L10”,然后我在每个单元格上有一个值 L1、L2、...、L10 的列。我需要知道哪些值包含在主字符串中,但完全匹配。

为了解决我的问题,我尝试了公式=IF(ISNUM(SEARCH(B3;$F$2));"Found";"Not found"),得到的结果如图所示。

但是,这个结果是不正确的,因为我只需要找到 L5、L6、L7 和 L10,而不是 L1。

有没有办法只使用 Excel 公式?

【问题讨论】:

  • 您愿意接受 VBA UDF 解决方案吗?
  • @urdearboy 恐怕我会尽量避免使用 VBA。
  • 如果您对Substring 的格式有任何控制权,则可以使用L01 而不是L1。对这个感兴趣。我想不出一种像公式一样的方法。认为替代品可能有效,但没有。 Ben & Scott 你在哪里!
  • 我尝试了=IF(LEN($F$2)=LEN(SUBSTITUTE($F$2,B3,"")),"Not Found","Found"),但与您的部分匹配有同样的问题。
  • @urdearboy 作为临时解决方案我正在修改Search string 的格式,使其包含“L5 + L6 + L7 + L10”(带有空格)。它允许我在公式中使用"*" 通配符。但是,我不确定我是否真的可以修改格式,所以这不是最终的解决方案

标签: excel string search substring contains


【解决方案1】:

只需将"+" 添加到搜索中字符串的开头和结尾即可:

=IF(ISNUMBER(SEARCH("+"&B3&"+","+"&$F$3&"+")),"Found","Not found")

【讨论】:

    【解决方案2】:

    FILTERXML 函数可以在这种情况下提供帮助:

    =SUMPRODUCT(--(B3=FILTERXML("<data><a>" & SUBSTITUTE($F$2;"+";"</a><a>") & "</a></data>";"//a")))
    

    【讨论】:

    • 感谢您的回答!另一个更简单更短,但你的也可以
    【解决方案3】:

    对于任何查看问题并打开 VBA UDF 解决方案的人

    将代码发布到工作表模块中

    公式语法:=Found( Substring, Search String )

    所以在 excel 表上:C3 = Found(B3, F2) = Not Found


    Public Function Found(SubString As Range, Within As Range) As String
    
    Dim Arr, i As Long
    Arr = Split(Within, "+")
    
    Found = "Not Found"
    
    For i = LBound(Arr) To UBound(Arr)
        If SubString = Arr(i) Then
            Found = "Found"
            Exit For
        End If
    Next i
    
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-14
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多