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

我已经复制了从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 / s。

我知道这对大多数人来说很简单,但是我相对比较新,所以任何帮助都不错。 谢谢。 你非常感激。

所以testing一下:

 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. select分隔符
  2. select空间作为分隔符

只是享受

那里不需要VBA,如果你只想看看那里的分割函数

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

select要分割的数据,然后单击“文本到列”。

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

在步骤2中,只select空格分隔符,然后单击下一步。

在步骤3中,您将看到数据将如何拆分的预览,并且可以select列而不导入它。

阅读关于Splitfunction – > 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是这样做的简单方法。 如果你知道你将永远有一个单一的空间,你可以非常快速地获得所有的单元格

 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返回一个数组,以便可以快速输出回电子表格。