0

我有一个地址列表,它们是一个单独的字符串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或套件信息)CityStateZip

我的想法是从右边开始,根据空格分隔符提取信息,但我不知道该怎么做。我该怎么办?

4

2 回答 2

0

我想你可以结合使用 MID 和 FIND 来提取部分地址,

例如

=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 等。

于 2013-07-02T02:24:38.180 回答
0

除了and之外,您还可以使用SUBSTITUTE()and使用稍短的公式: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)

最后一部分是将字符带到@我们刚刚插入的位置。

于 2013-07-02T04:29:07.887 回答