2014-01-29 69 views
2

計劃: Excel 2010中Excel 2010中搜索在IF函數文本 - 獨立的單元格數據

要求:一種方法提取的第一個名字,姓氏,電子郵件到單個細胞。

Data:我的數據有一張表格,裏面有原始的'髒數據',它很原始,很亂。我整理一下使用簡單=IF(A7="Order",1,""),則細胞的其餘部分如下:=IF($C7=1,B13,"")

例如:

(A) | Orig2    | Header? (C)   | NameAll (K)  | Price   | 
---------------------------------------------------------------------------------------- 
Order | Ms Admin ([email protected]) | =IF(A7="Order",1,"") | =IF($C7=1,B13,"") | =IF($C7=1,B5,"") 
Order | Mr Joe ([email protected]) | =IF(A8="Order",1,"") | =IF($C8=1,B14,"") | =IF($C8=1,B6,"") 
Order | Ms Fred ([email protected]) | =IF(A9="Order",1,"") | =IF($C9=1,B15,"") | =IF($C9=1,B7,"") 

結果:

(A) | Orig2    | Header? (C) | NameAll (K)  | Price | 
------------------------------------------------------------------------ 
Order | Ms Admin ([email protected]) | 1   | Ms Admin ([email protected]) | 13.99 
Order | Mr Joe ([email protected]) | 1   | Mr Joe ([email protected]) | 15.99 
Order | Ms Fred ([email protected]) | 1   | Ms Fred ([email protected]) | 17.99 

工作後,我已經複製單元格的值然後在我的工作表上「複製/值」,然後我可以在(U7)以下使用(從())中提取電子郵件)
=IFERROR(MID(K7,(SEARCH("(",K7)+1),((SEARCH(")",K7)-(SEARCH("(",K7)+1)))),"")

我想要做的就是把它從數據移動的開始,這樣我就可以徹底無緣步複製舊的,新的,則數據提取

嘗試:失敗
=IFERROR($C7=1,B13(MID(B13,(SEARCH("(",B13)+1),((SEARCH(")",B13)-(SEARCH("(",B13)+1))))))

我也來脫膠使用一個名稱,如:WH明德([email protected])試圖分開的名字,中間的時候,最後(電子郵件)

我通過多個步驟運行只是更容易嗎?

預先感謝您。

+2

你可以考慮分列與'(所有返回'用作分隔符剝離電子地址,然後把它們移到右邊,對於以'space'作爲分隔符留下的內容又是一樣的?對於WH Minder而言,仍然會失敗,但是您可以將它作爲例外情況處理正則表達式來處理它? – pnuts

+0

@pnuts我使用文本到列來進行日期轉換,我可以看到它在處理這個問題,所以繼續我在做的'基本版本',然後在我的最終'複製/值'後,然後拆分單元格,返回並刪除列K? – MrsAdmin

+0

使用Text to Columns的原始列'a一旦將ssembled數據解析爲其組件,ssembled數據就不會被保留。 – pnuts

回答

1

解析名稱並不簡單,因爲所有的變化。你的數據的一個問題,你已經顯示它將測試,以確定名字是否真的像Mr先生等標題

我的首選是使用VBA和正則表達式,但這裏有一些公式,你可以玩:

Email: =MID(TRIM(A1),FIND("(",TRIM(A1))+1,FIND(")",TRIM(A1))-FIND("(",TRIM(A1))-1) 
First Name: =LEFT(TRIM(A1),FIND(" ",TRIM(A1))-1) 
Middle Name: =IF(LEN(TRIM(A1))-LEN(SUBSTITUTE(A1," ",""))<>3,"",LEFT(MID(TRIM(A1),FIND(" ",TRIM(A1))+1,99),FIND(" ",MID(TRIM(A1),FIND(" ",TRIM(A1))+1,99))-1)) 
Last Name: =TRIM(RIGHT(SUBSTITUTE(TRIM(LEFT(A1,FIND("(",A1)-1))," ",REPT(" ",99)),99)) 

的名字將是第一個「字」,所以你可以測試一下,看看如果你不想歸還先生或太太什麼的。

中間名會被當且僅當有三個名字返回,但可能會被改寫,除了名字和姓氏

+0

謝謝。在我的數據中,我沒有先生,夫人,女士,我已經表示爲Joe,Jen,Jac等。這看起來不錯,我會在我的數據上嘗試。但是這仍然只在數據清理後才起作用。不在期間?我無法寫入原始數據解析? '= IF($ C7 = 1,B13,「」)'(沒關係,如果沒有的話,但是如果可能的話,我寧願跳過這一步)。我總是在填充名稱的單元格(1,2或3部分,並且()中的電子郵件不會更改) – MrsAdmin

+1

我不知道「數據清理」是什麼意思。在你之前和之後的例子中,Orig2和NameAll中的數據看起來是相同的。公式應該適用於這種格式的數據 - FN [MN] LN(電子郵件)所以我不能告訴你想用名稱(電子郵件)數據做什麼。這些公式將刪除多餘的空格,正如您通過使用TRIM所看到的那樣。請提供您認爲是「髒」數據的例子。也許它就像包裝公式一樣簡單,例如= if(a1 =「order」,one_of_the_formulas,「」) –

+0

這是我的工作表:http://imgur.com/hLBh6na這是銷售歷史我必須複製和粘貼,我清理和訂購,數據總是9行和2列每個訂單。標題(A),值(B)。 (C7) - >'= IF(A7 =「Order」,1,「」)''將數據的每一部分移動到1行= 1行,那麼數據(行7+,列AZ) '= IF($ C7 = 1,B13, 「」)'。 (P,Q,R)當我從(C7)向下自動填充其餘信息時,我想要分解名稱。我現在不得不移動這個名字,然後把它分解下來,我想在我移動它的時候試着打破它。我希望能更好地解釋它:)謝謝。 – MrsAdmin

相關問題