2012-05-04 40 views
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 

我需要能夠添加到sheet1列B這個值:1451894(來自sheet2的列F) 爲每個記錄。我沒有任何運氣與VLOOKUP或MATCH。

關於如何比較這些值的任何建議?

+0

allan p。傷害與艾倫一樣k。痛嗎? – Aprillion

+1

你試過什麼數據清理技術? (例如,用於從表1列A中提取「姓氏名」格式) – Aprillion

回答

1

這個挑戰不適用於Excel,部分原因是因爲SEARCHFIND只能從左到右工作,只能找到第一個實例。然而,你不可能希望從任何自動化解決方案中獲得完美的結果,並且可能準備接受一個相對簡單的不好的近似 - 也就是說,你選擇花費在編碼上的多少努力而不是人類評論。

首先,我建議使用first_name,initial,last_name和first_name,last_name從第二張表中創建一個Lookup表格,它們都指向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)=LEFT(G2,1)=IF(C2>0,MID(B2,C2+1,E2-C2+1),0)=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)其中 '陣列' 是查找表Sheet 2中。

在你的13個樣本中,應該給你8個匹配的樣本,其中5個包括中間匹配的匹配。如果不夠好,那麼只需在右邊的列中添加更多公式,直到達到您的權衡點(例如,雖然您的第13個示例是上述5個不匹配的其中一個,但是如果在單獨的列中你沒有連接'P' - 事實上它與其他列中的匹配表明它不像8個其他匹配的匹配)。你可以像ESQ那樣對ATTY進行處理,儘管在美國有超過10萬個這樣的姓氏的人。

另外,你可以提供一個賞金或嘗試freelancer.com在那裏我希望你可以找到很多人高興的一小筆提供的代碼不僅更有選擇性,但可能會給你一個'分數'來表示'匹配'的可能性。