在Excel 2013中拆分数据
我对Excel宏非常陌生。我在Excel中有以下数据:在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中删除连字符,因
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公式
),则可以使用以下三个函数:左
、右
、和替换
您需要添加一个额外的列来实现这一点
这将产生以下结果: