我的地址格式如下:
67 Sydney Road
Coburg
Vic 3058
有没有办法将此地址拆分为excel本身的4列,例如:
Address Line 1 : 67 Sydney Road
City: Coburg
State: VIC
Postcode: 3058
我的所有地址都以类似的方式格式化。在地址线和城市以及城市和州之间实际上有一个回车。
由于
答案 0 :(得分:1)
我建议使用正则表达式执行此任务。但首先,一个更简单的方法:
您可以使用Split(text_string, delimiter)
方法分隔各个部分。
首先,您可以在回车符处拆分,然后您可以在空白处拆分以分离数据本身。
但是如果你有“不洁”数据,有多个空格或其他问题,这种方法有一个很大的缺点。如果您有多个whitepsace,则必须使用Trim()
来摆脱它们。
为了安全并且能够解析“更复杂”的案例,我建议使用正则表达式。学习起来比较复杂,但是你有更多的解析文本的可能性。一个很大的优势是您可以对结果进行分组,这样您就可以使用“街道”或“城市”等群组名称。这比Array [0]更容易阅读。
答案 1 :(得分:1)
或者你也可以编写一个返回数组的矩阵函数。连续选择四个单元格,输入公式
=addr(<cell-reference>)
并使用<shift><cntrl><return>
提交。矩阵函数将在一行中的四个单独的列中返回输入字段的四行,然后您可以根据您的要求进行处理。
函数addr()
可能是这样的
Function addr(v)
Dim i%, a
a = split(v, Chr(10)) ' option base 0 is in effect ...
ReDim out(1 To 1, 1 To UBound(a) + 1)
For i = 0 To UBound(a)
out(1, i + 1) = a(i) ' matrix functions need to return a 2D array
Next i
addr = out ' this puts the separated values into your table
End Function
答案 2 :(得分:0)
如果您完全确定地址的格式将保持不变,那么这应该可以解决您的问题 -
Sub splitAddress()
Dim WrdArray() As String
Dim WrdArray2() As String
Dim text_string, temp, strg As String
text_string = "67 Sydney Road\nCoburg\nVic 3058"
WrdArray() = Split(text_string, "\n")
temp = Split(text_string, "\n")(2)
WrdArray2() = Split(temp, " ")
ReDim Preserve WrdArray(1)
ReDim Preserve WrdArray(3)
WrdArray(2) = WrdArray2(0)
WrdArray(3) = WrdArray2(1)
strg = "Address Line 1 : " & WrdArray(0) & vbNewLine & "City: " & WrdArray(1) & vbNewLine & "State: " & WrdArray(2) & vbNewLine & "Postcode: " & WrdArray(3)
MsgBox strg
End Sub