【问题标题】:Is there a Google Apps Script for Fuzzy Lookups?是否有用于模糊查找的 Google Apps 脚本?
【发布时间】:2020-02-23 07:15:38
【问题描述】:

我在一个很少更新的电子表格上有一个公司列表。我称它为 List A。

我还有一个不断更新的每周公司列表(列表 B),其中的条目应该与列表 A 中的某些条目相匹配。

现实情况是,从列表 B 的公司名称中提取的数据经常因各种业务缩写(例如 The Company、Company Ltd.、Company Accountants Limited)而不一致。有时,这些公司使用不同的商品名称或有各种拼写错误。

我最初非常不明智的反应是构建一个雇主别名表,第一列是真实的雇主名称,以下列为别名,如下所示:[https://i.stack.imgur.com/2cmYv.png]

左边是一个示例表,最右边是我使用以下数组公式模板的列:

=ArrayFormula(INDEX(A30:A33,MATCH(1,MMULT(--(B30:E33=H30),TRANSPOSE(COLUMN(B30:E33)^0)),0)))

不久之后,我意识到我需要为每个精确匹配变体(Ltd.、Ltd 和 Limited)创建一个新条目,因此我研究了模糊查找。 Alan's Fuzzy Matching UDFs 给我留下了深刻的印象,但我的需求很大程度上倾向于使用 Google 电子表格而不是 VBA。

抱歉,这篇文章很长,但如果有人对模糊查找有任何好的建议或可以提出替代解决方案,我将不胜感激。

【问题讨论】:

  • 为什么要标记excel?你问谷歌...
  • 这可能会有所帮助:stackoverflow.com/questions/40468119/…
  • 之前的cmets有没有帮助你找到解决方案?您能否分享一个样本表来尝试复制您的问题?您可以尝试在“应用程序脚本”中复制 Alan 的模糊匹配

标签: arrays sorting google-apps-script google-sheets fuzzy-logic


【解决方案1】:

cmets 并不是我想要的,但它们确实为我提供了一些灵感,让我想出了一个创可贴解决方案。

我的原始数组公式需要完全匹配,但问题是公司后缀和备用名称太多了,所以我研究了模糊查找。

我目前的答案是放弃模糊查找建议,而是专注于将原始数据字符串(即公司名称)编辑为更简化的子字符串。抓住一些漂浮的代码,我想出了一个组合的自定义公式,它为 GApps 脚本实现了两行:

 var companysuffixremoval = str.toString().replace(/limited|ltd|group|holdings|plc|llp|sons|the/ig, "");

 var alphanumericalmin = str.replace(/[^A-Za-z0-9]/g,"")

第一行只是我从字符串中删除流行的公司后缀和“the”的想法。

第二行是删除所有非字母数字字符,以及任何空格和句点。

这确保了“第一有限公司”。并且“First Company Ltd”变为“FirstCompany”,它应该可以从 OP 中的原始数组公式返回相同的值。当然,我还为初始字符串的任何尾随/前导/额外空格实现了修剪和清理行,但这对于第二行可能是不必要的。

如果有人能想出更好的主意,请告诉我。就目前而言,我只是在修改一个经验很少的脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    相关资源
    最近更新 更多