Google表格可以按多个顺序在多个单词字符串的两列之间查找部分匹配项

时间:2019-11-10 21:54:38

标签: arrays sorting google-sheets google-sheets-formula array-formulas

我不是公式专家,并且正在尝试在Google表格上实现特定目标,并且我已经在这里尝试过公式,但是它们似乎没有给我我需要的结果...

我基本上分析产品数据,并且通常从两个不同的来源提取产品列表。然后,我手动比较它们以找到匹配项。您可以想象,这非常繁琐。

举个例子,我目前正在比较两种护发产品的价目表,它们都包含数百种产品。我必须在两个列表中找到匹配的产品,然后比较详细信息等。

我通常只需从两个工作表中提取“名称”列,然后将它们放入新的电子表格的A和B列中即可。

问题在于我们在这些列表中没有获得UPC / EAN,因此需要比较产品名称。

这些列表中的产品名称通常是完全不同的,所有单词的顺序不同,而且经常使用不同的单词。例如,如果两个列表中都找到相同的产品,则一个条目可以是“ Hair Volumising Shiny Shampoo 30ml”。 ”,另一个可以是“玫瑰Aoe洗发露30ml丰盈发质”,它们是同一产品,但名称略有不同,顺序也完全不同。

我正在寻找一个公式,该公式可以按任何顺序标识部分匹配项(例如,此处将是“香波香波”),然后告诉我它们在哪里。 这需要从一列到另一列,例如从B列到A-“ 如果列'a'中的任何内容以任何顺序以任何方式部分匹配'B'”,然后标记它。

如果它能以某种方式对匹配进行多少评分,即从1到100,那将是理想选择,因为然后可以按此列对其进行排序。

非常感谢您抽出宝贵的时间阅读此书

1 个答案:

答案 0 :(得分:0)

尝试:

=ARRAYFORMULA(TRIM(TRANSPOSE(QUERY(QUERY(QUERY(SPLIT(TRANSPOSE(SPLIT(
 QUERY(TRANSPOSE(QUERY(TRANSPOSE("♦"&ROW(A1:A)&" "&IFNA(REGEXEXTRACT(TO_TEXT(
 IF(IFERROR(SPLIT(A1:A, " "))<>"", LOWER(SPLIT(A1:A, " ")), )), 
 TEXTJOIN("|", 1, SORT(TRANSPOSE(SPLIT(TEXTJOIN(" ", 1, 
 LOWER(B1:B)), " ")), 1, 0))))),,999^99)),,999^99), "♦")), " "), 
 "select max(Col2) group by Col2 pivot Col1"), "offset 1", 0),,999^99))))

0