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