1

我在电子表格的 A 列中有同一个人的以下信息:

ALAN K HURTZ
ALAN K HURTZ, ATTY
ALAN K. HURTZ
ALAN K. HURTZ, ATTY
ALAN K. HURTZ, ATTY.
ALAN HURTZ
ALAN HURTZ NDER
ALAN HURTZ ORPD
ALAN HURTZ, ATTY
ALAN HURTZ, ATTY.
ALAN HURTZ, ESQ
ALAN HURTZ, ESQ.
ALAN P. HURTZ, ATTY.

在另一个电子表格中,我有这一行:

A           B         C         D       E        F

Hurtz       Alan      K.        ALIAS   91065    1451894

我需要能够1451894为每条记录添加到 sheet1 列 B 这个值:(来自 sheet2 的列 F)。我对 VLOOKUP 或 MATCH 没有任何运气。

关于如何比较这些值的任何建议?

4

1 回答 1

1

此挑战不适用于 Excel,部分原因是SEARCH并且FIND只能从左到右工作并且只能定位第一个实例。但是,您不能希望从任何自动化解决方案中获得完美的结果,并且可能准备接受一个相对简单的近似值 - 即您可以选择在编码上花费多少精力而不是人工审查.

首先,我建议从您的第二张工作表创建一个查找表,其中 first_name、initial、last_name 和 first_name、last_name 都指向您在 ColumnF 中的值。在第一种情况下,您可能希望将“inc Initial”之类的内容连接到您的 ColumnF 值,以指示比不匹配初始值更接近的匹配。

然后我建议将第一张工作表的 ColumnA 复制到 ColumnB 并从 ColumnB 中删除 ESQ(至少对于未启动 ESQ 的姓氏!)。在美国,大约有 40,000 人的姓氏以“Esq”开头,但与放弃能够“忽略”Esquires 的便利相比,将这些作为单独的问题处理可能更容易。

我建议分别在 ColumnsC:N 中输入以下内容(假设 Row1 是数据标签):=FIND(" ",B2) =IF(ISERROR(FIND(",",B2)),0,FIND(",",B2)) =LEN(B2) =LEFT(B2,C2) =IF(C2>0,MID(B2,C2+1,E2-C2+1),0) =LEFT(G2,1) =IF(ISERROR(FIND(" ",G2)),0,FIND(" ",G2)) =MID(G2,I2+1,E2-C2) =IF(ISERROR(FIND(",",J2)),IF(ISERROR(FIND(".",J2)),0,FIND(".",J2)),FIND(",",J2)) =IF(K2=0,J2,LEFT(J2,K2-1)) =IF(I2>0,F2&H2&" "&L2,F2&L2) =VLOOKUP(M2,array,2,FALSE)其中 'array' 是 Sheet2 中的查找表。

在您的 13 个样本中,应该给您 8 个“匹配”,其中 5 个包括中间名首字母的匹配。如果不够好,那么只需继续在右侧的列中添加更多公式,直到达到您的权衡点(例如,尽管您的第 13 个示例是上述 5 个不匹配的示例之一,但如果在单独的列中它会这样做您没有连接“P” - 事实上它在其他列中匹配表明它不像其他 8 个那样匹配)。你可以像对待 ESQ 一样对待 ATTY,尽管在美国有超过 100,000 人使用这个姓氏。

或者,您可以提供赏金或尝试 freelancer.com,我希望您会发现很多人愿意为一小笔钱提供代码,这些代码不仅更具选择性,而且可能会给您一个“分数”来表明如何可能是任何“匹配”。

于 2012-07-10T05:16:13.053 回答