当地址格式不一致时,如何将Excel中单个单元格的街道地址解析为单个单元格?

时间:2013-07-02 01:22:03

标签: excel excel-formula

我有一个地址列表,这些地址是Excel spreadsheet中的单个字符串:

123 Sesame St New York, NY 00000
123 Sesame Ct Atlanta, GA 11111
100 Sesame Way, 400 Jacksonville, FL 22222

如上所示,第三个地址不同。它的套件号为400,通常为street line 2行。我无法提出将上述地址解析为单个单元格的公式:Street 1(此行中包含street 2或套件信息),City,{{1} }和State

我的想法是从右边开始并根据空格分隔符提取信息,但我不知道如何做到这一点。我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

我想你可以做MID和amp;的组合寻找提取部分地址,

e.g。

=IF(IFERROR(MID(A1,1,FIND(",",A1,FIND(",",A1)+1)),1)=1,MID(A1, 1, FIND(",",A1)-1),MID(A1,1,FIND(",",A1,FIND(",",A1)+1)-1))

将从单元格A1中提取地址,具体取决于它找到的逗号数量(1或> 1)。

按照上述模式,ZIP和州不会太困难。我认为问题在于提取城市,因为你不知道在哪里设置城市名称和街道之间的限制,除非你有一组有限的街道类型,例如: ct,st,way等。

答案 1 :(得分:0)

除了SUBSTITUTE()LEN()之外,您还可以使用FIND()LEFT()使用略短的公式:

=LEFT(A1,FIND("@",SUBSTITUTE(A1,",","@",LEN(A1)-LEN(SUBSTITUTE(A1,",",""))))-1)

执行的第一部分是:

LEN(A1)-LEN(SUBSTITUTE(A1,",",""))

这基本上计算输入字符串中的逗号数。然后进入下一个公式:

SUBSTITUTE(A1,",","@",[1])

@代替最后一次出现的逗号(如果地址有这个,请使用你在地址中找不到的另一个字符)。

=LEFT(A1,FIND("@",[2])-1)

最后一部分将角色带到我们刚插入的@