【问题标题】:=ISNUMBER(SEARCH()) formula not working properly=ISNUMBER(SEARCH()) 公式无法正常工作
【发布时间】:2019-11-10 05:12:07
【问题描述】:

基本上,我试图搜索 b 列的值是否包含在 a 列的单元格中

我目前正在使用公式

=ISNUMBER(SEARCH(B1,$A:$A)) 

并在条件格式中使用它来突出显示 A 列中包含 B 列字符串的单元格。但它没有突出显示正确的单元格

有什么建议吗?

【问题讨论】:

  • 这可能与您的数字列的格式像文本有关吗?
  • 嗨,是的,它目前被格式化为文本。应该通用吗?
  • 嗨,我将它们更改为一般然后数字格式,但仍然无法正常工作。 2234 应该为真,因为 A2 包含 2234 但在公式的输出中仍然为假
  • @dotNET 我可能会考虑 find()...

标签: excel excel-formula conditional-formatting


【解决方案1】:

问题是您的ISNUMBER(SEARCH(…. 公式正在返回一组值{FALSE;TRUE;FALSE;FALSE;...},对于within_text 中的每个项目返回一个值。您需要知道其中任何项是否匹配。

因此,使用您的公式,考虑 数组 公式修改

=OR(ISNUMBER(SEARCH(B1,$A:$A)))

由于这是一个数组公式,您需要通过按住 ctrl + shift 的同时点击 enter 来“确认”它。如果您正确执行此操作,Excel 将在公式周围放置大括号 {...},如公式栏中所示

如果你不喜欢使用CSE 输入方法,你可以使用这个公式,它会在没有匹配时返回零,或者在任何匹配时返回非零:

=SUMPRODUCT(-ISNUMBER(SEARCH(B1,$A:$A)))

【讨论】:

    【解决方案2】:

    Excel 的SEARCH 函数用于查找一个string 在另一个string 中的位置。通常你会这样使用它:

    =SEARCH("String A", "A Longer String Containing String A")
    

    这将返回第一个字符串在第二个字符串中开始的字符索引,在本例中为28

    您真正需要的是VLOOKUP。由于您正在进行文本搜索(子字符串),因此您需要您的范围是文本类型而不是数字。

    您应该执行以下操作:

    • 在 A 列右侧添加一个额外的列,并使用 TEXT 函数将条目转换为文本形式:

      =TEXT(A1, "@")
      
    • 现在您可以使用VLOOKUP 在此文本范围内执行子字符串匹配。 VLOOKUP 在您不要求它执行完全匹配时支持通配符(第 4 个参数应该是 FALSE)。这是你的公式:

      =VLOOKUP("*" & C1 & "*",$B:$B,1,FALSE)
      

    请注意,我已将 B 列(文本列)作为查找范围传递,而 C1 是包含您要搜索的文本的单元格。

    此方法还有一个额外的优势,即它从范围中返回实际匹配的条目,因此您不必手动找到它。

    获得结果后,您可以对其应用条件格式。

    【讨论】:

      【解决方案3】:

      以第一个单元格(在本例中为A1)为活动单元格突出显示A列(或A列起始单元格A1中的相关范围),使用以下公式作为条件格式规则:

      =(SEARCH($B1,$A1)*(LEN($B1)>0))>0
      

      逻辑是首先从主字符串中搜索给定的子字符串,然后将结果乘以LEN($B1)>0,以排除B列空白单元格返回的1的结果。

      注意:条件格式array 方式工作,因此即使公式只查看范围第一行中的值,只要您使用相对(或在某些情况下是绝对的)单元格引用正确并在设置规则之前正确突出显示结果范围,规则将以与数组第一行相同的方式应用,如本例所示。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-13
        • 1970-01-01
        • 2022-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多