这是结合百度经验和论坛上的资料整理的方法,分两步,第一步是把一个完整的工作表按照某一列分解为不同的工作表。第二步是把这些工作表在分别拆为工作薄。
个人觉得这是一个相对比较简单的方法,也尝试用Python一步到位,但是比较复杂,搞不定。
第一步 将一个工作表按照某一列内容拆分为不同的工作表。
用数据透视表的方法要数据比较少,上千条的数据基本上就运转不了。用Python的对知识要求有点高,舍弃;
我用VBA的方式在做的。
1, 打开待拆分的工作表
2, alt+F11,插入“模块”
3, 在模块的窗口,复制下面的代码:
Sub 拆分工作簿为多个sheet()
Set d = CreateObject("scripting.dictionary")
With Worksheets(1)
rrow = .Cells(Rows.Count, "a").End(3).Row
For i = 2 To rrow '从第2行开始拆分
strr = .Range("B" & i).Value '拆分B列内容
If Not d.exists(strr) Then
d.Add strr, .Range("a" & i).Resize(1, 6)
Else
Set d.Item(strr) = Union(d.Item(strr), .Range("a"& i).Resize(1, 6))
End If
Next
k = d.keys
i = d.items
For a = 0 To d.Count - 1
Worksheets.Add.Name = k(a)
i(a).Copy Worksheets(k(a)).Range("a2")
Next
End With
End Sub
4, 这个代表复制黏贴后格式会存在错误,按照下面的图片来调整格式。主要对齐方式
5.按工具栏上面的绿色小三角。如下图所示:
6, 运行完成后,因为上面分拆后的表格都没有表头,可以把原来的表头复制黏贴过去,由于数据比较少,这个步骤就很简单。
第二步,怎么将Excel多个工作表拆分成多个单独的Excel
1. 打开需要拆分的excel,在任意工作表右击,点击“查看代码”
2. 在打开的窗口中输入如下代码:
Private Sub 分拆工作表()
Dim sht As Worksheet
Dim MyBook As Workbook
SetMyBook = ActiveWorkbook
ForEach sht In MyBook.Sheets
sht.Copy
ActiveWorkbook.SaveAs Filename:=MyBook.Path & "\" & sht.Name,
FileFormat:=xlOpenXMLWorkbook '将工作簿另存为xlsx格式
ActiveWorkbook.Close
Next
MsgBox "文件已经被分拆完毕!"
End Sub
5. 点击绿色三角,运行程序,等待拆分。
6. 拆分成功后,会弹出窗口提示。
7. 返回Excel工作簿文件所在路径即可查看已经拆分的工作薄。
网友评论