Excel中的1个单元格分隔地址元素

我有这种格式的数千个地址:

密苏里州堪萨斯市123 Happy St.,邮编64521

9812 Main Street Minneapolis,MN 62154

12 Virgina Ave,Apt 8,Dallas,TX 54334

我想提取地址,城市,州,邮编到单个单元格(如果可能,不使用VB)。 我已经尝试了其他方法发布的几个变种,但我不能完全得到所需的结果。

分析你的问题!

  1. 你想用逗号分隔你的地址string
  2. 您然后想要在第一个空白处从(1)中分割出正确的片段

广告1):使用=FIND(",", A1)得到逗号的位置,并在a =LEFT(...)和a =RIGHT(...)使用结果。需要string长度( =LEN(...)

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

现在来了有趣的一部分…在第三个例子中,我们不能在第一个逗号分割,而是在第三个逗号分割……或者作为一个更一般的规则,我们总是必须在最后一个逗号分割….但我们如何findstring中有多less个逗号作为附加参数提供给=FIND(...)函数?

快速回答:看看Stackoverflow(正是在这里 )…非常聪明…用所有的逗号从原始长度中删除string的长度,然后用别的东西replace逗号的最后发生,因为=SUBSTITUTE(...)工作在发生,而=FIND()只适用于职位。 如果你把这一切都包括进来,你将会拥有

  • B1: =LEFT(A1;FIND("@";SUBSTITUTE(A1;",";"@"; LEN(A1)-LEN(SUBSTITUTE(A1;",";""))))-1) – – >完整的地址
  • C1:( 同上)

这里我们使用“@”作为最终逗号的中性replacestring,因为我们假定没有地址使用“@”

广告2):您再次将上述(空白而不是逗号)应用于右侧部分。 你可以使用简单的公式的第一个版本,因为很清楚你想在第一个空白处分割

  • D1: =LEFT(C1;FIND(" ";C1)-1) – >”状态
  • E1: =RIGHT(C1;LEN(C1)-LEN(D1)-1) – >邮政编码