2013-07-29 58 views
2

我有成千上萬的地址格式爲:獨立地址元素在Excel

123快樂街密蘇里州堪薩斯城64521

9812主街明尼阿波利斯,明尼蘇達62154

12佛吉尼亞Ave,Apt 8,Dallas,TX 54334

我想提取地址,城市,州,郵編到單個單元格(如果可能,不使用VB)。我已經嘗試過發佈其他方法的幾個變體,但是我無法得到理想的結果。

回答

2

分析你的問題!

  1. 你想在逗號
  2. 拆分您的地址字符串,那麼你要分割從(1)在第一空白

廣告1)正確的片段:你的位置逗號使用=FIND(",", A1),並在=LEFT(...)=RIGHT(...)使用的結果 - 後者還需要字符串長度(=LEN(...)

  • B1:=LEFT(A1;FIND(",";A1)-1)
  • C1:=RIGHT(A1;LEN(A1)-LEN(B1)-2)

現在到了有趣的部分...在你的第三個例子,我們絕不能分裂的第一個逗號,但在第三個逗號......或更一般的規則,我們總是必須在最後一個逗號分割......但是我們如何找到字符串中有多少個逗號,以將它的位置作爲額外的參數輸入到=FIND(...)函數中?

快速回答:看看Stackoverflow(確切地說是here)......非常聰明......用原始長度中刪除的所有逗號減去字符串的長度,然後用別的東西替換逗號的最後一次出現,因爲=SUBSTITUTE(...)適用於發生,而=FIND()只適用於職位。如果你將所有這此,你將有

  • B1:=LEFT(A1;FIND("@";SUBSTITUTE(A1;",";"@"; LEN(A1)-LEN(SUBSTITUTE(A1;",";""))))-1)- >詳細地址
  • C1:(與上述相同)

在這裏我們用 「@」作爲最終逗號的中性替換字符串,因爲我們假定沒有地址使用「@」廣告2):將上述內容(以空白而不是逗號)再次應用於右側部分。您可以使用公式的簡單的第一個版本,因爲它是清楚你想在第一空白

  • D1分裂:=LEFT(C1;FIND(" ";C1)-1)- >狀態
  • E1:=RIGHT(C1;LEN(C1)-LEN(D1)-1)- >郵政編碼
+0

有沒有一種方法來提取城市 - 和使用邏輯來確定城市有兩個詞? (即堪薩斯城,舊金山等) – user2320271

+0

從你的樣本數據我會說不,因爲你似乎沒有街道地址和城市之間的可靠分隔符,它要麼空白或逗號 – MikeD