【问题标题】:Find if a cell value is a part of some other cell in a list查找单元格值是否是列表中其他单元格的一部分
【发布时间】:2013-11-11 14:08:51
【问题描述】:

我知道我可以在 Excel 中搜索某些单元格的精确值是否出现在某些选择中,例如

A         B
cat       dog
          black dog
          black cat              
          cat

C1=MATCH(A1;B1:B4;0)

这将给我 4 - B1:B4 中出现“猫”的第一行。

但我想搜索第一个包含我的文本但不等于它的单元格,所以在我的情况下它会是 3,因为“黑猫”包含“猫”和“黑猫”“猫"

没有VBA可以吗?

【问题讨论】:

    标签: excel


    【解决方案1】:

    您可以在MATCH 中使用通配符。所以我认为你可以使用类似的功能来实现这一点

     =IF(OR(ISNA(MATCH(A2&"?*",B1:B5,0)),ISNA(MATCH("*?"&A2,B1:B5,0))),IF(ISNA(MATCH(A2&"?*",B1:B5,0)),IF(ISNA(MATCH("*?"&A2,B1:B5,0)),-1,MATCH("*?"&A2,B1:B5,0)),MATCH(A2&"?*",B1:B5,0)),IF(MATCH("*?"&A2,B1:B5,0)<MATCH(A2&"?*",B1:B5,0),MATCH("*?"&A2,B1:B5,0),MATCH(A2&"?*",B1:B5,0)))
    

    此函数确保Cat前后至少有1个字符,因此不会直接匹配Cat。

    这是MATCH的一些文档


    注意。正如 cmets 中所述,您可能需要将 , 更改为 ;,因为您的语言环境似乎与我的不同。

    【讨论】:

    • 这不一定会找到第一个匹配项 - 如果您将上述示例中的 B2 从 "dog" 更改为 "cat flap" 然后这应该是第一个有效匹配 - 但公式仍然返回 3 - 请参阅我的答案
    • ...如果“猫瓣”是 B1:B5 中包含“猫”的唯一值,则公式返回 #N/A...
    • 谢谢@barryhoudini 我改变了这个,所以它可以正常工作。 :)
    • 我认为你仍然需要添加另一个 IF,因为如果 B1 = "black cat" 和 B2 = "cat flap" 你会得到2 而不是 1
    • 是的.. 你是对的(再次)。我进行了编辑,但现在这是一个讨厌的公式。你的答案要优雅得多。
    【解决方案2】:

    您有效地匹配了 2 个条件 - A1 包含在文本 A1 文本中,因此您可以将此版本与 MATCH

    一起使用

    =MATCH(1;INDEX((B1:B4&lt;&gt;A1)*(SEARCH(A1;B1:B4)&gt;0);0);0)

    我使用分号而不是逗号作为分隔符,因为您所在地区似乎需要这些分号

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多