Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 谷歌表单-匹配公司名称_Database_Google Sheets_Fuzzy Search_Fuzzy - Fatal编程技术网

Database 谷歌表单-匹配公司名称

Database 谷歌表单-匹配公司名称,database,google-sheets,fuzzy-search,fuzzy,Database,Google Sheets,Fuzzy Search,Fuzzy,我有两个数据库,都有公司名称,但格式不同。我已经能够使用vlookup进行精确匹配。我想提取写得不同的公司,但它们实际上是同一家公司并提取数据 下面是我拥有的数据库的一小部分 Database 1 Column A 1-800-Flowers.com Inc Abbott Laboratories (Abbott) 21st Century Fox America Inc (formerly News America Inc) Column B 1234(data I need to gra

我有两个数据库,都有公司名称,但格式不同。我已经能够使用
vlookup
进行精确匹配。我想提取写得不同的公司,但它们实际上是同一家公司并提取数据

下面是我拥有的数据库的一小部分

Database 1

Column A
1-800-Flowers.com Inc
Abbott Laboratories (Abbott)
21st Century Fox America Inc (formerly News America Inc)

Column B
1234(data I need to grab)
4567
8910

从上面的数据库中可以看到,数据库1与数据库2的匹配类似,如 21世纪福克斯美国公司vs 21世纪福克斯公司

在我的数据库1中,我有大约4000多个值,而在数据库2中,我有10000个值。是否有代码来比较两个数据库之间的相似单词,并从B列和D列中提取我需要的数据

我尝试过查询,但它没有按我希望的方式工作

目前,我所做的是使用REGEXTRACT提取相似的单词,以查找字符串之间的匹配,如21世纪福克斯中的世纪福克斯和21世纪福克斯,并尝试使用query匹配这两个数据集。然而,当我这样写的时候,我的查询结果是NA

=query(E:E,"Select E where E contains '"&L2&"'",0 )
L2是包含字符串Century Fox的单元格

=ARRAYFORMULA(索引($E$2:$E$68),匹配(最大值(数组约束)(MMULT(LEN)(IFERROR)(VLOOKUP(拆分($E$2:$E$68,”),转置(拆分($E$2:$E$68,”),1,0)),行(A$1:A$7)^0,行(E68),行(E68),7)),数组约束(MMULT(LEN(拆分($E$2:$E$E$68,”),转置(拆分($A2,”),1),行(A$1:A$7),行(代码)<>

M2:

=数组公式(索引($e2:$F$68),匹配(最大(数组约束)(MMULT)(LEN)(IFERROR)(VLOOKUP(拆分($e2:$E68,”),转置(拆分($A2,”),1,0)),行(A$1:A$7)^0),行(E68),行(E68),7)),数组约束(MMULT(LEN)(IFERROR(拆分($e2:$E68,”),转置(拆分($A2,”),1)),行(a1:A$7),行(e60),代码)<>

N2:

=ARRAYFORMULA(文本(最大(数组约束)(MMULT(LEN(IFERROR)(VLOOKUP(SPLIT($e2:$E68,”)),转置(SPLIT(A2,”),1,0))),行(A$1:A$7)^0,行(E68),7))/LEN(A2),“0%”)

向下拖动填充

注:

  • 公式是资源密集型的。应用程序脚本可能是更好的选择

  • 对于给定的样本,该公式具有合理的精度

  • 7是在所有列E(或数据库2的列C)中找到的每个单元格的最大字数。这在上面的公式中是硬编码的。这应该使用帮助器列找到。Z2:COUNTA(拆分(A2,“”)向下拖动填充。和AA2:=最大值(Z2:Z)

  • N列给出了VLOOKUP生成结果的置信度。最好是手动重新检查低于45%的任何内容

  • 工作原理:所有E列(db2)都被字分割,每个字都在列(db1)的每个条目中查看。如果一组单词与E列中的多个条目匹配,则取匹配单词的最大长度作为可能的匹配。字母法而不是单词法可能会提供更好的精度,但在给定的示例中似乎没有必要


您是否对excel解决方案感兴趣,还是只是添加了“踢”和“咯咯”的标签?代码在哪里?抱歉。我接错了链接。我以前没有获得可共享链接。我现在已经添加了它@SherylHohman@Jeeped我正在寻找一个谷歌表单解决方案。在我发布之前,我没有检查链接,但是链接现在正在运行。谢谢@I'-'I。我正在谷歌表单上查看你的代码。
=query(E:E,"Select E where E contains '"&L2&"'",0 )