有一份excel文件,里面B列数据格式一致,既包含冒号也包含逗号,需要根据符号分列两次,最终可以分列成40列,将数据存放到另一份excel文件中的VBA脚本代码
时间: 2024-03-09 12:46:11 浏览: 20
好的,我可以帮你解决这个问题。你可以尝试以下的VBA脚本代码:
```vb
Sub SplitData()
Dim srcWorkbook As Workbook
Dim srcWorksheet As Worksheet
Dim destWorkbook As Workbook
Dim destWorksheet As Worksheet
Dim lastRow As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim strData As String
Dim arrData() As String
'打开源文件和目标文件
Set srcWorkbook = Workbooks.Open("源文件路径")
Set destWorkbook = Workbooks.Open("目标文件路径")
'设置源数据工作表和目标数据工作表
Set srcWorksheet = srcWorkbook.Worksheets("源数据工作表名称")
Set destWorksheet = destWorkbook.Worksheets("目标数据工作表名称")
'获取源数据工作表的最后一行
lastRow = srcWorksheet.Cells(srcWorksheet.Rows.Count, "B").End(xlUp).Row
'循环读取源数据并分列到目标数据
For i = 1 To lastRow
strData = srcWorksheet.Cells(i, "B").Value
If InStr(strData, ":") > 0 Or InStr(strData, ",") > 0 Then
arrData = Split(strData, ",")
For j = 0 To UBound(arrData)
If InStr(arrData(j), ":") > 0 Then
subArrData = Split(arrData(j), ":")
For k = 0 To UBound(subArrData)
destWorksheet.Cells(i, 1 + j * 2 + k).Value = subArrData(k)
Next k
Else
destWorksheet.Cells(i, 1 + j * 2).Value = arrData(j)
End If
Next j
Else
destWorksheet.Cells(i, 1).Value = strData
End If
Next i
'保存并关闭文件
srcWorkbook.Close SaveChanges:=False
destWorkbook.Close SaveChanges:=True
End Sub
```
你需要将代码中的以下内容替换成你的实际情况:
- 源文件路径:需要分列的Excel文件路径
- 目标文件路径:分列结果需要保存的Excel文件路径
- 源数据工作表名称:需要分列的Excel文件中数据所在的工作表名称
- 目标数据工作表名称:分列结果需要保存的Excel文件中数据所在的工作表名称
请注意,这段代码仅适用于将一行数据分列成40列的情况,如果你的数据行数比较多,可能需要稍作修改。另外,在使用代码前请务必备份好数据,以免不必要的损失。