在Excel 2013中拆分数据

在Excel 2013中拆分数据,excel,excel-formula,vba,Excel,Excel Formula,Vba,我对Excel宏非常陌生。我在Excel中有以下数据: Col1 Col2 col3 col4 Col5 32 000-001 1 32 002-001 100 32 005-000 20 等等。我的excel电子表格中有6313行 我想拆分col2,将前三个数字放在col3中的连字符之前,将后三个数字放在col4中。我还想从col2中删除连字符,因

我对Excel宏非常陌生。我在Excel中有以下数据:

Col1 Col2       col3    col4  Col5
32    000-001                   1
32    002-001                   100
32    005-000                   20
等等。我的excel电子表格中有6313行

我想拆分col2,将前三个数字放在col3中的连字符之前,将后三个数字放在col4中。我还想从col2中删除连字符,因此我的最终输出如下:

col1   col2     col3    col4    col5
32    000001    000      001    1
32    002001    002      001    100
332   005000    005      000    20
这是我已经尝试过的。我试图用空格替换连字符,然后我丢失了所有的前导零。我不想失去col2的所有前导零

任何帮助都将不胜感激。

尝试一下:

Sub aljali()
    Dim i As Long, N As Long

    Range("A:E").NumberFormat = "@"
    N = Cells(Rows.Count, "A").End(xlUp).Row

    For i = 1 To N
        Cells(i, "B").Value = Replace(Cells(i, "B").Value, "-", "")
        Cells(i, "C").Value = Left(Cells(i, "B").Value, 3)
        Cells(i, "D").Value = Right(Cells(i, "B").Value, 3)
    Next i
End Sub
注意:

关键是将单元格的格式设置为文本。这有助于保留前导零。

尝试一下:

Sub aljali()
    Dim i As Long, N As Long

    Range("A:E").NumberFormat = "@"
    N = Cells(Rows.Count, "A").End(xlUp).Row

    For i = 1 To N
        Cells(i, "B").Value = Replace(Cells(i, "B").Value, "-", "")
        Cells(i, "C").Value = Left(Cells(i, "B").Value, 3)
        Cells(i, "D").Value = Right(Cells(i, "B").Value, 3)
    Next i
End Sub
注意:

关键是将单元格的格式设置为文本。这有助于保留前导零。

尝试

With Worksheets("sheet8")
    For i = 2 To .Cells(.Rows.Count, "B").End(xlUp).Row
        With .Cells(i, "B")
            .Resize(1, 3).NumberFormat = "@"
            .Resize(1, 3) = Array(Replace(.Value2, Chr(45), vbNullString), _
                           Split(.Value2, Chr(45))(0), _
                           Split(.Value2, Chr(45))(1))
        End With
    Next i
End With
试试看


假设
Col1
位于A1:将ColumnB移动到ColumnC,将文本拆分为以
-
为分隔符的列(为两列选择文本),然后在B2中向下复制以适应:

=C2&D2

假设
Col1
位于A1:将ColumnB移动到ColumnC,将文本拆分为以
-
为分隔符的列(为两列选择文本),然后在B2中向下复制以适应:

=C2&D2

如果在VBA之外执行此操作是一个选项(标记为
Excel公式
),则可以使用以下三个函数:
、和
替换

您需要添加一个额外的列来实现这一点

这将产生以下结果:


如果在VBA之外执行此操作是一个选项(标记为
Excel公式
),则可以使用以下三个函数:
、和
替换

您需要添加一个额外的列来实现这一点

这将产生以下结果: