将地址拆分为Excel中的列

时间:2016-11-25 10:10:44

标签: excel split excel-formula

我需要帮助将地址拆分为Excel中的列。 COLUMN A中的地址写成:

601 W Houston St Abbott,TX 76621美国
13498 US 301 South Riverview,FL 33578美国

COLUMN B实际上是一个辅助列。它只包含COLUMN A中的城市名称。我的想法是以某种方式将COLUMN B与COLUMN A匹配,然后所有匹配移动到另一列。这会将City与地址分开。
State,Zip和Country我可以使用“split text to columns”,因为“逗号”是分隔符。但我需要帮助拆分地址和城市。
城市名称后面有一个“逗号”,但有些城市在城市名称中有多个单词。

我需要做的是分割地址,如下图中的绿色突出显示。

在Excel中执行此操作的最佳方法是什么?那个公式是什么?

This is a sample of my spreadsheet

3 个答案:

答案 0 :(得分:0)

由于您已经在Col B中拥有City,只需在A

中替换城市

D2 = SUBSTITUTE(A2,C2,“”)

C列在Col C中粘贴特殊值

使用逗号分割C列。

然后使用“空格”拆分列D.假设您拥有美国的所有记录,则可以根据需要将国家/地区添加到所有行。

EDIT 我错过了行中的城市名称与地址不对应。要匹配Master中的城市,您可以使用此数组公式:

C2 = INDEX(B:B,MATCH(1,MATCH(“”& $ B:$ B&“”,A2,0),0))

必须使用Ctrl-Shift-Enter确认数组公式。

然而,这将找到第一场比赛。如果你有城市福斯特&福斯特城的福斯特城永远不会匹配。因此,按照长度的降序对城市进行排序。

一旦你将城市名称匹配,你就可以按照我之前给出的步骤进行操作。请注意,我已调整公式以考虑此新公式匹配的城市名称。

答案 1 :(得分:0)

我们可以使用LOOKUP的怪癖来实现这一目标。

D2中的

=LOOKUP(1E+99,FIND(B$2:B$100,A2),B$2:B$100)将基于在B列中搜索匹配来返回城市。请注意,这将需要指定要填充的B列的全部范围。

然后我们可以将=LEFT(A2,FIND(D2,A2)-2)放在C2中以获取地址的第一部分。

如果我们可以假设州,Zip和国家的长度不变(如果你在美国之外有任何地址,那么你需要改变它),其余的很容易:

E2中的

=LEFT(RIGHT(A2,22),3)

F2中的

=LEFT(RIGHT(A2,19),5)

G2中的

=RIGHT(A2,13)

答案 2 :(得分:0)

因此,可以使用公式完成它。这可能不是最好的方式,但我得到了我需要的东西。

  1. 我已经添加了一张新工作表,并将其命名为" cities"
  2. 我将城市列表从工作表1移动到工作表"城市"
  3. 中的COL A.
  4. 在表1中,B1 = = INDEX(城市!$ A $ 1:$ A $ 10000; LOOKUP(99 ^ 99; MATCH(右(TRIM(左)(SUFTTITUTE(A2;",&#34 ;; REPT("&#34 ;; 255)); 255));行($ A $ 1:$ A $ 100));城市!$ A $ 1:$ A $ 10000; 0)))
  5. 然后,我只需使用SUBSTITUTE从工作表1中的A栏删除城市名称:C1 == SUBSTITUTE(A1,B1,"")
  6. 那就是它!