如何将文本拆分到不同的列或从原始列中删除文本?

How do i split text to a different column or remove a text from the original column?

我复制了一列从D9开始的数据到D-whatever,复制的数据既有十进制值又有文本。 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/s。

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

所以测试一下:

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 工具:

In Data tab, Convert tool :

  1. Choose Delimited
  2. Chose space as Separator

尽情享受

那里不需要VBA,如果你想看一看split function there

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

Select 您要拆分的数据,然后单击“文本分栏”。

在第 1 步中,select 分隔选项并单击下一步。

在第 2 步中,select 只是 Space 分隔符,然后单击下一步。

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

了解 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

如前所述,Split 是执行此操作的简单方法。如果您知道您将始终拥有一个 space,您可以使用

非常快速地获取所有单元格
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)值列并在[=25上应用<code>Split来工作=].然后它获取这两个值并使用 Resize 将输出扩展一列将它们弹出到单元格顶部。

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