Excel 匹配多个部分值
Excel matching multiple partial values
我发布了一张示例图片,展示了我想要实现的目标。我想匹配 A 行中 D 行的部分值。当有匹配时,它应该 return 来自 D 的值。我有可以有多个部分匹配的单词(例如 'summer dress' 和 'dress' 都是 'XXL Summer dress') 的部分匹配)我想我会从大多数字符到最少的顺序排列 D 行以获得最佳匹配。
通常我会使用多个 IF 函数,但在我的文件中,A 列包含 30.000 个值,而我在 D 行中有 300 个值,我猜这使得公式太大了。
对于这些值,是否可以获得如图所示的结果?
我试过 VLOOKUP / INDEX & MATCH 和一些宏,但 none 似乎 return 我想要的值。
使用INDEX/AGGREGATE:
=INDEX(D:D,AGGREGATE(15,7,ROW($D:$D)/(ISNUMBER(SEARCH($D:$D,A3))),1))
这将遍历 $D:$D
中的值以查看它们是否存在于较长的字符串中,如果找到匹配项,它将 return。如果找不到匹配项,它将 return 出错。
MATCH
接受通配符(用于部分匹配)。您可以在显示的工作表的单元格 B11
中尝试此公式(以及 drag/fill 下方)。
=INDEX(A:A,AGGREGATE(15,6,MATCH("*"&$D:$D&"*",$A11,0)*(ROW($D:$D)-ROW(D)+1),1))
所以:
MATCH
用于检查 Word
是否部分匹配任何 Categories
。 *
通配符将匹配任何字符(包括 "no character")。它应该 return 一个 #N/A
的数组用于不匹配和 1
用于匹配。
ROW
用于创建对应的从1开始的等长数组
- 在没有
FILTER
函数的情况下,AGGREGATE
基本上用于filter/exclude所有错误。 15
意味着只有第一个匹配的 Category
是 returned.
INDEX
用于检索合适的Category
并完成查找。
如果性能确实是一个问题,您可能需要考虑关闭自动重新计算,或者使用 VBA 例程,或者不将数据存储在 Excel.
我发布了一张示例图片,展示了我想要实现的目标。我想匹配 A 行中 D 行的部分值。当有匹配时,它应该 return 来自 D 的值。我有可以有多个部分匹配的单词(例如 'summer dress' 和 'dress' 都是 'XXL Summer dress') 的部分匹配)我想我会从大多数字符到最少的顺序排列 D 行以获得最佳匹配。
通常我会使用多个 IF 函数,但在我的文件中,A 列包含 30.000 个值,而我在 D 行中有 300 个值,我猜这使得公式太大了。
对于这些值,是否可以获得如图所示的结果?
我试过 VLOOKUP / INDEX & MATCH 和一些宏,但 none 似乎 return 我想要的值。
使用INDEX/AGGREGATE:
=INDEX(D:D,AGGREGATE(15,7,ROW($D:$D)/(ISNUMBER(SEARCH($D:$D,A3))),1))
这将遍历 $D:$D
中的值以查看它们是否存在于较长的字符串中,如果找到匹配项,它将 return。如果找不到匹配项,它将 return 出错。
MATCH
接受通配符(用于部分匹配)。您可以在显示的工作表的单元格 B11
中尝试此公式(以及 drag/fill 下方)。
=INDEX(A:A,AGGREGATE(15,6,MATCH("*"&$D:$D&"*",$A11,0)*(ROW($D:$D)-ROW(D)+1),1))
所以:
MATCH
用于检查Word
是否部分匹配任何Categories
。*
通配符将匹配任何字符(包括 "no character")。它应该 return 一个#N/A
的数组用于不匹配和1
用于匹配。ROW
用于创建对应的从1开始的等长数组- 在没有
FILTER
函数的情况下,AGGREGATE
基本上用于filter/exclude所有错误。15
意味着只有第一个匹配的Category
是 returned. INDEX
用于检索合适的Category
并完成查找。
如果性能确实是一个问题,您可能需要考虑关闭自动重新计算,或者使用 VBA 例程,或者不将数据存储在 Excel.