【问题标题】:How do I split a cell with multiple delimiters in visual basic?如何在 Visual Basic 中拆分具有多个分隔符的单元格?
【发布时间】:2016-12-23 14:29:31
【问题描述】:

我想用 VBA 将一个单元格的内容分成三个独立的部分,例如 [城市]、[州]、[邮政编码] 放在同一行的三个不同列中,而原始单元格保持不变。

我原以为拆分会起作用,但不幸的是我遇到了一些复杂的问题,第一个拆分似乎只继承了左边的内容,留下了其余的,第二个,我不知道如何合并两个分隔符为单个拆分。

知道如何克服这些问题吗?

    Cells(Row1, ColA).Select
    Location = ActiveCell.Value

    Cells(Row1, ColC) = Split(Location, ",")


    Cells(Row1, ColA).Select
    Cells(Row1, ColD) = Split(Location, " ")

    Cells(Row1, ColA).Select
    Cells(Row1, ColE) = Split(Location, " ")

【问题讨论】:

  • 试试下面的代码,看看它是否适合你
  • 您是否尝试过此处获得的答案中的代码?

标签: string excel cell delimiter vba


【解决方案1】:

Split()返回一个字符串数组,你需要遍历这个数组并将每个元素的值赋给对应的单元格(看看this answer)。

另外,您不需要选择单元格来为其分配值,您可以使用:

Cells(Row,Column).Value = X

关于2个分隔符,你可以按照here的描述来做。

【讨论】:

    【解决方案2】:

    使用Split,我在中间使用了一个数组只是为了存储分割后的String(以防你以后要使用它),它也节省了我迭代的时间。

    Sub Split_toThree()
    
    Dim lrow                As Long
    Dim LastRow             As Long
    Dim SplitArr()          As String
    
    ' find last row in Column A (where you keep your full string)
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    For lrow = 2 To LastRow
        SplitArr() = Split(Cells(lrow, "a"), ",")
        Range("C" & lrow & ":E" & lrow) = SplitArr()
    Next lrow
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多