arrays - Google表格在多个订单中查找多个单词字符串中的两列之间的部分匹配
问题描述
我不是公式专家,我正在尝试在谷歌表格上实现特定的目标,我已经在这里尝试过公式,但它们似乎并没有给我需要的结果......
我主要分析产品数据,我通常从两个不同的来源提取产品列表。然后我手动比较它们以找到匹配项。您可以想象,这非常乏味。
举个例子,我目前正在比较两个美发产品的价格表,它们都包含数百种产品。我必须在两个列表中找到匹配的产品,然后比较详细信息等。
我通常只是从两张表中提取“名称”列,然后将它们放入新的电子表格的 A 和 B 列中。
问题是我们没有在这些列表中获得 UPC/EAN,因此需要比较产品名称。
这些列表中的产品名称通常完全不同,所有单词的顺序不同,并且经常有不同的单词。例如,如果在两个列表中找到相同的产品,一个条目可以是“Hair Volumising shiny Shampoo 30ml”和其他可以是'Rose Aoe Shampoo 30ml Volumising Hair',它们是相同的产品,但名称略有不同,顺序完全不同。
我正在寻找一个能够以任何顺序识别部分匹配的公式(例如,这里将是“丰盈洗发水”)并告诉我它们在哪里。这将需要从一列到另一列,例如从 B 到 A -“如果列 'a' 中有任何内容以任何顺序以任何方式与 'B' 部分匹配”,然后标记它。
如果它可以以某种方式评价它的匹配程度,即可能从 1 到 100,那将是理想的,因为它可以按此列排序。
非常感谢您花时间阅读本文
解决方案
尝试:
=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))))
推荐阅读
- wordpress - 如何在不停机的情况下在 wordpress 中处理新主题
- python - 给定一个 [string, number] 元组列表,创建一个字典,其中键是字符串的第一个字符,值是数字的总和
- firebase - 我可以在不需要令牌的情况下公开 firebase 文件 URL 吗?
- c++ - NRVO 是否发生在静态成员变量初始化中?
- javascript - NodeJS:本地主机不断加载
- c - 在 Linux 上运行的遗留 C 代码中的奇怪行
- typescript - TypeScript 中具有区分联合的类型安全强制转换(如 C++ 的 dynamic_cast)
- java - Android Studio 播放和录制音频错误。“无法解析 Sybmol”和“无法解析方法”
- flutter - 无法让 Flutter 在 VS Code 中以调试模式运行
- amazon-web-services - 从不同环境中的配置文件上传到 AWS S3 存储桶