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

问题描述 投票:0回答:1

我在电子表格中列出了很少更新的公司。我称它为列表A。

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

现实是,由于各种业务缩写(例如,Company,Company Ltd.,Company Accountants Limited),从列表B的公司名称提取的数据通常不一致。有时,这些公司的名称不同或拼写错误。

我最初非常不明智的反应是构建一个雇主别名名称表,第一列是真实的雇主名称,随后的列中包含别名,例如:[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 Spreadsheets,而不是VBA。

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

arrays sorting google-apps-script google-sheets fuzzy-logic
1个回答
1
投票

这些评论并非我真正想要的,但确实为我提供了一个创可贴的解决方案提供了一些启发。

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

我目前的答案是放弃模糊查找建议,而将精力集中在将原始数据字符串(即公司名称)编辑为更简化的子字符串中。为了解决一些浮动的代码,我想出了一个组合的自定义公式,该公式为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”和“ First Company Ltd”将变为“ FirstCompany”,它应该可以从OP中的原始数组公式返回相同的值。当然,我还为初始字符串的任何尾部/前导/多余空格实现了修剪和清洁线​​,但是第二行可能不必要。

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

© www.soinside.com 2019 - 2024. All rights reserved.