在Excel中拆分地址字段

时间:2013-02-07 19:17:33

标签: excel excel-vba excel-2007 excel-formula vba

我有一个带有地址的单元格的excel文件。

3个不同的数据示例:

 123 Main Street/n Apartment2 /n New York, NY 10001
 123 Main Street/n New York, NY 10001
 123 Main Street

我想把它分成三个单独的字段。但是,如上面的数据所示,有些将出现0次/ n,有些将出现2次。有些人会有3次出现。

我可以处理一次,包括:          = LEFT(E6,SEARCH(“/ n”,E6,1)-2)          =右(出口!E6,LEN(出口!E6) - 搜索(“/ n”,出口!E6,1)-1)

然而,当有/ n

的可变数量时,我的公式开始崩溃

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

解决方案值得回答:

将“/ n”替换为您数据中不存在的任何单个字符,例如@#$^~ - 并使用Text to Columns

全部替换可通过按 CTRL + H 获得。

如果您不确定数据是否在您的数据中 - 请在更换前通过搜索进行检查。

答案 1 :(得分:1)

这是使用VBA的另一种方法

Option Explicit

Sub Sample()
    Dim MyArray() As String
    Dim ws As Worksheet
    Dim lRow As Long, i As Long, j As Long, c As Long

    '~~> Change this to the relevant sheet name
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        For i = 1 To lRow
            If InStr(1, .Range("A" & i).Value, "/n", vbTextCompare) Then
                MyArray = Split(.Range("A" & i).Value, "/n")
                c = 1
                For j = 0 To UBound(MyArray)
                    .Cells(i, c).Value = MyArray(j)
                    c = c + 1
                Next j
            End If
        Next i
    End With
End Sub

SCREENSHOT(之前)

enter image description here

SCREENSHOT(之后)

enter image description here