如何在Excel中提取地址?

时间:2019-05-29 02:20:06

标签: excel-formula worksheet-function

我在一个单元格中有地址,我想将它们提取到同一行的不同单元格中。有些单元格有四行地址,有些单元格有三行。我能够使用文本轻松地将列分为三个分隔符,而不是四个分隔符。

在此处输入图片描述

在第一个示例中,我有四行,第二条有三行

Anchorage Oncology Centre
3801 University Lake Drive
Suite 300-B2
Anchorage, AK 99508 US

我希望将以上内容分成5个单元格。每个单元格一个,用于地址,城市,州,邮政编码和国家/地区

Anchorage Oncology Centre
3801 University Lake Drive
Suite 300-B2


Anchorage

AK 

99508 

US

在下面的第二个示例中

Providence Alaska Medical Center
3200 Providence Drive
Anchorage, AK 99508 US

我想要

Providence Alaska Medical Center
3200 Providence Drive

Anchorage

AK 

99508 

US

这可以使用公式吗?

到目前为止,我所做的是完整的地址位于单元格A1中,我希望它们位于B1C1D1E1中和F1。我所做的是针对我使用的国家(=RIGHT(A2,2),邮政编码,我使用的是=MID(A2, LEN(A2)-7, 5),州=MID(A2, LEN(A2)-10, 2)。现在,我试图提取这座城市。该城市在逗号之前和换行符(Char(10))之后,并且地址是前2或3行。我不知道该怎么做。

每行之间都有一个换行符。

谢谢

2 个答案:

答案 0 :(得分:1)

可能的解决方案是

=IF(ROW(A1)<SUMPRODUCT((A$1:A$7<>"")*1),A1,TRIM(MID(SUBSTITUTE(SUBSTITUTE(INDEX(A$1:A$7,SUMPRODUCT((A$1:A$7<>"")*1)),",",)," ",REPT(" ",999)),(ROW(X1)-SUMPRODUCT((A$1:A$7<>"")*1)+1)*999-998,999)))

分割部分is from here

=TRIM(MID(SUBSTITUTE(A$2," ",REPT(" ",999)),ROW(X1)*999-998,999))

我添加了一些计算以查找最后一行并消除逗号:

SUBSTITUTE(INDEX(A$1:A$7,SUMPRODUCT((A$1:A$7<>"")*1)),",",)

如果所有地址都位于第一行,那么您可以在第一列的地址下方插入公式并将其向下和向右复制。当前地址可以有7行,因此您必须至少将其复制到第8行。

enter image description here

答案 1 :(得分:1)

如果使用SUBSTITUTE(),则可以用新字符替换第n个出现的字符,然后使用FIND()返回该字符。例如,如果您第三次出现SUBSTITUTE CHAR(10),则可以再次找到该字符作为地址的结尾。

因此,如果您的完整地址在A1中,则可以使用LEFT(A1,FIND("~",SUBSTITUTE(A1,CHAR(10),"~",3)))

提取地址。

enter image description here