首页 > 解决方案 > 如何从表 1 中返回一个值,从具有表 2 中一行的所有名称的行中返回一个值,而不管这些名称出现在哪一列中?

问题描述

我有两个表,都有列

First Name|Preferred First Name|Middle Name|Last Name|Preferred Last Name

我需要将表 1 中的记录匹配到表 2。并从表 1 中返回一个 ID 号以显示在表 2 中。表 1 来自数据库,表 2 包含有关这些人的更多信息,需要与之匹配他们的身份证号码见表 1。

如何从包含表 2 中一行的所有名称的行中返回表 1 中的 ID 号,而不管这些名称出现在哪一列中?

在此处输入图像描述

问题是名字都乱七八糟。有些人在名字字段中输入了他们的名字和中间名。一些叫 James 的人在表 2 中记录了他们的名字为 Jim,这将与他们的首选名字匹配,但与表 1 中的名字不匹配。有些人对他们的姓氏做了同样的事情 - 例如,Bruggen-Pullman 先生将他的姓氏记录为布鲁根,因为这就是他使用的东西。它可能会记录在他首选的姓氏字段中,但如果要对照不同的字段进行检查,那就不好了。有些人刚刚完全搞糊涂了,把他们的姓当作他们的名字,等等。

我尝试了这种方法,只是更改了圆形行和列,但它没有返回任何有用的东西。

如果有帮助,则使用辅助列很好。

加分项:表 2 中的某些记录可能是正确的,但不包括所有名称。因此,表 2 中的 Collins [中间名字段中的空字符串] Jado 应该与表 1 中的记录 Jado Sally Collins 匹配,但反之则不然。也就是说,如果它在表 2 中显示 Jonas,则表 2 中的公式必须找到包含 Jonas 和所有其他名称的记录。

如果您能弄清楚如何从名称中过滤所有空格和标点符号,则可以加分。例如,Micheal John O'Leary-Williams 应该成为 MichaelOLearyWilliams。我没有像 FILTER 这样的 365 功能可以使用,所以这可能是不可能的。

谢谢大家。

标签: searchexcel-formulamatchexcel-2019

解决方案


如果您有太多记录需要手动查看,您可能需要执行某种模糊查找。Power Query 具有此功能。您还可以免费安装一个 Excel 加载项:

https://www.microsoft.com/en-us/download/details.aspx?id=15011

在任何一种情况下,想法都是使用相似度阈值匹配相似的行。

另外,我不知道在这种情况下您是否可以控制数据收集,但我建议尽可能使用数据验证来缓解此类问题。

这是我使用插件得到的输出。它成功匹配了所有 3 条记录。

在此处输入图像描述


推荐阅读