Excel 使用反向通配符匹配

Excel 使用反向通配符匹配

这是我的桌子:

   A                 B                   c
1  foo.com/page1     foo.com/page1?xyz
2  foo.com/page2     foo.com/page1?abc
3  foo.com/page3     foo.com/page8?xyz

对于 B 列中的每个项目,我想知道 A 列中是否有匹配的项目(结果应该是:B1>TRUE,B2>TRUE,B3>FALSE)

我尝试过这个:

 =match(B1, A:A&"*")

但它不起作用。

任何想法?

答案1

该解决方案仅适用于您的示例。

使用 VLOOKUP 近似匹配而不是精确匹配,您可以执行像您所描述的那样的“模糊”匹配。

=IFERROR(IF(LEFT(B1,LEN(VLOOKUP(B1,A:A,1,TRUE)))=VLOOKUP(B1,A:A,1,TRUE),TRUE,FALSE),FALSE)

基本上,该公式是使用单个长字符串并搜索多个较短的字符串来寻找最接近的匹配项。

  • 它识别第一个接近的匹配

  • 验证 A 列匹配项中的所有字符是否都以最左边的字符开头出现在 B 列字符串中

  • 如果 A 匹配中的所有字符均出现在 B 字符串中,则返回 TRUE

  • 如果 A 匹配中的字符并非全部都在 B 字符串中表示,则返回 FALSE

弱点(为什么这可能会因真实数据而失败):

示例包含页码 1、2、3。如果 B 列字符串是第 11 页,则此公式在匹配 1 时将返回 TRUE(它不会去寻找 11)。

相关内容