Excel formula Excel匹配多个部分值

Excel formula Excel匹配多个部分值,excel-formula,excel-2010,Excel Formula,Excel 2010,我已经发布了一个示例图像,显示了我想要实现的目标。我想匹配A行D行中的部分值。当存在匹配时,它应该返回D行中的值。我有可以有多个部分匹配的单词(例如“summer dress”和“dress”都是“XXL summer dress”的部分匹配),我想我应该将D行从大多数字符排列到最少,以获得最佳匹配 通常我会使用多个IF函数,但在我的文件中,列A包含30.000个值,而行d中有300个值,这使得公式太大了 对于这些数量的值,是否可以获得如图所示的结果 我尝试了VLOOKUP/INDEX&MAT

我已经发布了一个示例图像,显示了我想要实现的目标。我想匹配A行D行中的部分值。当存在匹配时,它应该返回D行中的值。我有可以有多个部分匹配的单词(例如“summer dress”和“dress”都是“XXL summer dress”的部分匹配),我想我应该将D行从大多数字符排列到最少,以获得最佳匹配

通常我会使用多个IF函数,但在我的文件中,列A包含30.000个值,而行d中有300个值,这使得公式太大了

对于这些数量的值,是否可以获得如图所示的结果

我尝试了VLOOKUP/INDEX&MATCH和一些宏,但似乎没有返回我想要的值。

使用INDEX/AGGREGATE:

=INDEX(D:D,AGGREGATE(15,7,ROW($D$3:$D$6)/(ISNUMBER(SEARCH($D$3:$D$6,A3))),1))

这将遍历
$D$3:$D$6
中的值,查看它们是否存在于较长的字符串中,然后如果找到匹配项,它将返回。如果没有找到匹配项,它将返回一个错误。

match
接受通配符(用于部分匹配)。您可以在所示工作表的单元格
B11
中尝试此公式(并向下拖动/填充)

因此:

  • MATCH
    用于检查
    单词
    是否部分匹配任何
    类别
    *
    通配符将匹配任何字符(包括“无字符”)。对于不匹配项,它应该返回一个
    #N/A
    数组;对于匹配项,它应该返回一个
    1
    数组
  • 用于创建相应的等长1基数组
  • 在缺少
    过滤器
    功能的情况下,
    聚合
    基本上用于过滤/排除所有错误。
    15
    表示只返回第一个匹配的
    Category
  • 索引
    用于检索相应的
    类别
    并完成查找

如果性能确实是一个问题,您可能需要考虑关闭自动重新计算,或者使用VBA例程,或者不在Excel中存储数据。

=INDEX(A$11:A$14,AGGREGATE(15,6,MATCH("*"&$D$11:$D$14&"*",$A11,0)*(ROW($D$11:$D$14)-ROW(D$11)+1),1))