我在电子表格中列出了很少更新的公司。我称它为列表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。
很长的帖子,很抱歉,如果有人对模糊查找有任何好的建议或可以提出替代的解决方案,我将不胜感激。
这些评论并非我真正想要的,但确实为我提供了一个创可贴的解决方案提供了一些启发。
我的原始数组公式需要完全匹配,但是问题是公司后缀和替代名称太多了,所以我研究了模糊查找。
我目前的答案是放弃模糊查找建议,而将精力集中在将原始数据字符串(即公司名称)编辑为更简化的子字符串中。为了解决一些浮动的代码,我想出了一个组合的自定义公式,该公式为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中的原始数组公式返回相同的值。当然,我还为初始字符串的任何尾部/前导/多余空格实现了修剪和清洁线,但是第二行可能不必要。
[如果有人可以提出更好的主意,请告诉。就目前而言,我只是在修改经验最少的脚本。