【问题标题】:Fuzzy match on google sheets谷歌表格上的模糊匹配
【发布时间】:2016-11-07 14:54:30
【问题描述】:

我正在尝试模糊匹配谷歌表格中的两列,我尝试了许多公式,但我认为这将归结为一个脚本来提供帮助。

我有一列包含产品 ID,例如

  • E20067

然后我有另一个表格,其中包含与此产品代码相关的图像网址,例如

我想要做的是“模糊”匹配这两列的产品 ID,然后为每个匹配创建一个新列。因此,产品 ID 将位于每个产品图片 URL 的多列中的同一行 - 如下图所示:

有没有办法在谷歌表格中使用脚本或公式做到这一点?

【问题讨论】:

    标签: regex google-sheets google-spreadsheet-api


    【解决方案1】:

    在 Google 表格中有一些强大的“正则表达式”公式。

    假设您在 A 列中有 ID 列表,在 B 列中有 URL 列表

    然后使用公式:

    =REGEXEXTRACT(B1,JOIN("|",$A$1:$A$3))
    

    它将匹配其中一个 ID。将公式往下拉,查看结果如上图。

    查看更多info here

    【讨论】:

    • 感谢您的回答 - 但如果每个产品 ID 有多个图像,例如5 倍图像?
    • 这非常适合在数据集之间获取静态列 - 但由于超过 50,000 个字符而停止?
    【解决方案2】:

    旧线程,但如果您发现自己在这里,请搜索我的名为 Flookup 的 Google 表格插件。它应该完全符合您的要求。

    对于这种情况,你可以使用这个函数:

    Flookup (lookupValue, tableArray, lookupCol, indexNum, threshold, [rank], [range])
    

    参数详情为:

    1. lookupValue: 你正在查找的值
    2. tableArray: 你要搜索的表
    3. lookupCol: 你要搜索的栏目
    4. indexNum: 你想要返回数据的列
    5. threshold: 低于该百分比的相似度不应返回数据
    6. rank:第n个最佳匹配(即如果第一个不符合您的喜好)
    7. range:选择返回每个匹配的百分比相似度或行号

    请注意,虽然 OP 似乎想要完整的可能匹配列表,但 Flookup 一次只会返回一个结果。

    Flookup 现在可以通过其LRM 模式返回所有可能匹配项的列表。

    【讨论】:

    • Flookup 库非常适合我。还包括获得多个结果的公式。在这里找到它:chrome.google.com/webstore/detail/flookup/…
    • 感谢@mozboz 的支持,感谢您将链接添加到 Flookup。我将更新我的帖子以包含该网站的链接
    【解决方案3】:

    试试下面的。我假设产品代码在 Sheet1 中,而 URL 在 Sheet2 中。都在 A 列中:

    =iferror(transpose(FILTER(Sheet2!$A$2:$A,Search("*"& A2 &"*",Sheet2!$A$2:$A))))
    

    抄下来。

    如果您想显示图片而不是网址,请尝试:

    =arrayformula(image(iferror(transpose(FILTER(Sheet2!$A$2:$A,Search("*"& A2 &"*",Sheet2!$A$2:$A))))))
    

    【讨论】:

      猜你喜欢
      • 2022-11-26
      • 1970-01-01
      • 2021-10-21
      • 2021-08-27
      • 2018-12-29
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多