【问题标题】:Split address field in Excel在 Excel 中拆分地址字段
【发布时间】:2013-01-23 10:16:35
【问题描述】:

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

3 个不同的数据示例:

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

我想将其拆分为三个单独的字段。但是,如上述数据所示,有的 /n 出现 0 次,有的出现 2 次。有些会出现3次。

我可以处理一个事件,其中: =LEFT(E6, 搜索("/n",E6,1)-2) =RIGHT(Export!E6,LEN(Export!E6)- SEARCH("/n",Export!E6,1)-1)

但是,当 /n 的数量可变时,我的公式开始分解

有什么建议吗?

【问题讨论】:

  • 您不需要公式 - 文本到列将完美地完成工作)
  • 不幸的是,我无法让文本到列工作,它只接受字符而不是两个“/n” 请记住 /n 实际上是两个字符而不是换行符。
  • 将“/n”替换为不在您的数据中的任何单个字符,例如@#$​​^~ - 然后转到上面)通过 Ctrl-H 可以使用全部替换。
  • 使用搜索查看! ;)
  • 谢谢,我现在试试

标签: excel excel-2007 excel-formula vba


【解决方案1】:

值得回答的解决方案:

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

全部替换可通过按CTRL+H

如果您不确定该字符是否在您的数据中,请在替换前通过搜索进行检查。

【讨论】:

  • + 1 表示非 VBA 方法 :)
【解决方案2】:

这是另一种使用 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

屏幕截图(之前)

屏幕截图(之后)

【讨论】:

  • +1 for VBA)) 将书签作为我的日常需要 - 准备大量数据数组进行测试,但并不总是像上面那样简单。
猜你喜欢
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2012-08-01
相关资源
最近更新 更多