我发布了一个示例图像,显示了我想要实现的目标。我想匹配A行中D行的部分值。存在匹配项时,应返回D行的值。我有一些单词可以具有多个部分匹配项(例如'summer dress'和'dress'都是部分匹配项(“ XXL夏装”))我想我应该从大多数字符到最小字符对D行进行排序,以获得最佳匹配。
通常我会使用多个IF函数,但是在我的文件列A中包含30.000个值,而在D行中我具有300个值,这使该公式太大了。
对于这些数量的值,是否有可能获得如图所示的结果?
我已经尝试了VLOOKUP / INDEX&MATCH和一些宏,但是似乎没有一个返回我想要的值。
答案 0 :(得分:0)
使用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
中的值以查看它们是否存在于较长的字符串中,然后如果找到匹配项,则返回。如果找不到匹配项,则会返回错误。
答案 1 :(得分:0)
MATCH
接受通配符(用于部分匹配)。您可以在显示的工作表的单元格B11
中尝试使用此公式(并向下拖动/填充)。
=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))
所以:
MATCH
用于检查Word
是否部分匹配任何Categories
。 *
通配符将匹配任何字符(包括“无字符”)。对于不匹配,应返回#N/A
的数组,对于匹配,应返回1
的数组。ROW
用于创建相应的等长的基于1的数组。FILTER
函数的情况下,AGGREGATE
用于基本上过滤/排除所有错误。 15
表示仅返回第一个匹配的Category
。INDEX
用于检索适当的Category
并完成查找。如果性能确实是一个问题,则您可能要考虑关闭自动重新计算,使用VBA例程或不将数据存储在Excel中。