【问题标题】:How do i split text to a different column or remove a text from the original column?如何将文本拆分到不同的列或从原始列中删除文本?
【发布时间】:2015-05-27 09:58:50
【问题描述】:

我已经复制了从 D9 开始的一列数据到 D-无论如何,复制的数据既有十进制值又有文本。 D列的每个单元格中的数据各不相同

示例

D9 : 1675.87 升/秒 D10:1555.87 升/秒 D11:1635.87 升/秒 这是我尝试过的代码..

    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。

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

【问题讨论】:

标签: vba excel text split


【解决方案1】:

所以测试一下:

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. 选择空格作为分隔符

尽情享受吧

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

【讨论】:

  • 你做到了!天哪,非常感谢@R3uk
【解决方案2】:

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

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

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

在第 2 步中,仅选择空格分隔符并单击下一步。

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

【讨论】:

    【解决方案3】:

    阅读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
    

    【讨论】:

    • 嗨!再次问好@Dawid,您的代码仅适用于第一个值。
    • 是的,仅适用于第一个值。我发布了这个例子,让你知道这种方式是有效的。如果您需要更多的行数,请尝试使用loop -> excel-easy.com/vba/loop.html
    • 我试图以不同的方式循环它,但我无法做到正确。你可以试试吗? p.s 并非我的所有数据都是 1675.87 L/s。它随着列的下降而不同
    • 编辑您的问题并从 D 列添加更多数据。也许我们可以找到另一个解决方案。你也可以发布你没有工作的代码
    【解决方案4】:

    如前所述,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 返回一个数组,以便快速将其输出回电子表格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      相关资源
      最近更新 更多