如何将文本拆分到其他列或从原始列中删除文本?

时间:2015-05-27 09:58:50

标签: excel vba excel-vba text split

我已经复制了从D9到D的数据列,无论如何,复制的数据都包含十进制值和文本。数据列D中的每个单元格都有所不同

实施例

D9:1675.87 L / s D10:1555.87 L / s D11:1635.87 L / s 这是我试过的代码..

    Dim c As Collection, K As Long
     Set c = New Collection
     K = 9
     On Error Resume Next
     For Each r In Range("D9:D" & Cells(Rows.Count, "D").End(xlUp).Row)
     ary = Split(r.Text, ",")
     For Each a In ary
     c.Add a, CStr(a)
     If Err.Number = 0 Then
     Cells(K, "E").Value = a
     K = K + 1
     Else
     Err.Number = 0
     End If
     Next a
     Next r
     On Error GoTo 0

我想分割数据,使其为D6 1675.87和E6 L / s或完全删除L /。

我知道这对大多数人来说很简单,但我在这方面比较新,所以任何帮助都会很好。谢谢。非常感谢。

4 个答案:

答案 0 :(得分:2)

所以测试一下:

Sub SplitValues()
Dim aSplit As Variant

With ActiveSheet
    For I = 2 To Cells(.Rows.Count, "D").End(xlUp).Row
        aSplit = Split(Cells(I, "D"), " ", 2)

        'Write in D and E columns (erase data already in D)
        Cells(I, "D") = aSplit(0)
        Cells(I, "E") = aSplit(1)

        'Write in E and F columns (don't erase data already in D)
        'Cells(I, "E") = ArrSplit(0)
        'Cells(I, "F") = ArrSplit(1)
    Next I
End With

End Sub

您可以使用内置的Excel工具:

  

数据标签中,转换工具:

     
      
  1. 选择分隔
  2.   
  3. 选择空格作为分隔符
  4.   

并享受

如果你想看一下split function there

,那就不需要VBA了

答案 1 :(得分:1)

如果您转到功能区上的“数据”选项卡,您将看到“文本到列”工具。

选择要拆分的数据,然后单击“文本到列”。

在步骤1中,选择“分隔”选项,然后单击“下一步”。

在第2步中,仅选择Space delimiter,然后单击Next。

在第3步中,您将看到如何拆分数据的预览,并可选择选择列而不导入它。

答案 2 :(得分:1)

了解Split功能 - > https://msdn.microsoft.com/en-us/library/6x627e5f%28v=vs.90%29.aspx

Sub LittleExample()

Dim ArrSplit As Variant

Cells(6, "D") = "1675.87 L/s"

ArrSplit = Split(Cells(6, "D"), " ")

Cells(6, "D") = ArrSplit(0) ' 1675.87
Cells(6, "E") = ArrSplit(1) ' L/s

End Sub

答案 3 :(得分:1)

如上所述,Split是执行此操作的简便方法。如果您知道您将始终拥有一个空格,则可以使用

快速获取所有单元格
Sub SplitAndRewrite()

    Dim rng_start As Range
    Set rng_start = Range("D6")

    Dim rng_cell As Range
    For Each rng_cell In Range(rng_start, rng_start.End(xlDown))
        rng_cell.Resize(, 2) = Split(rng_cell, " ")
    Next
End Sub

代码通过迭代连续(使用End)值列并在Split上应用来工作。然后使用Resize获取两个值并将它们弹回到单元格的顶部,以将输出扩展一列。

Split返回一个数组,以便可以快速输出回电子表格。