是否有用于模糊查找的 Google Apps 脚本?

Is there a Google Apps Script for Fuzzy Lookups?

我在很少更新的电子表格中有一个公司列表。我将其称为列表 A。

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

现实情况是,由于各种商业缩写(例如The Company、Company Ltd.、Company Accountants Limited),从List B的公司名称中提取的数据经常不一致。有时,这些公司在不同的商号下或有各种拼写错误。

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

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

=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。

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

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

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

我目前的答案是放弃模糊查找建议,而是专注于将原始数据字符串(即公司名称)编辑为更简化的子字符串。抓住一些浮动的代码,我想出了一个组合的自定义公式,它为 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"。

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

这确保 "The First Company Limited." 和 "First Company Ltd" 变为 "FirstCompany",这应该与从 OP 中的原始数组公式返回相同的值一起使用。当然,我还为初始字符串的任何 trailing/leading/extra 空格实现了修剪和清理线,但这可能对第二行来说是不必要的。

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