首页 > 解决方案 > Google表格在多个订单中查找多个单词字符串中的两列之间的部分匹配

问题描述

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

我主要分析产品数据,我通常从两个不同的来源提取产品列表。然后我手动比较它们以找到匹配项。您可以想象,这非常乏味。

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

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

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

这些列表中的产品名称通常完全不同,所有单词的顺序不同,并且经常有不同的单词。例如,如果在两个列表中找到相同的产品,一个条目可以是“Hair Volumising shiny Shampoo 30ml”和其他可以是'Rose Aoe Shampoo 30ml Volumising Hair',它们是相同的产品,但名称略有不同,顺序完全不同。

我正在寻找一个能够以任何顺序识别部分匹配的公式(例如,这里将是“丰盈洗发水”)并告诉我它们在哪里。这将需要从一列到另一列,例如从 B 到 A -“如果列 'a' 中有任何内容以任何顺序以任何方式与 'B' 部分匹配”,然后标记它。

如果它可以以某种方式评价它的匹配程度,即可能从 1 到 100,那将是理想的,因为它可以按此列排序。

非常感谢您花时间阅读本文

标签: arrayssortinggoogle-sheetsgoogle-sheets-formulaarray-formulas

解决方案


尝试:

=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


推荐阅读