|
发表于 2023-5-11 09:15:36
|
显示全部楼层
可以使用VBA宏来实现这个功能。
首先需要打开Visual Basic编辑器,在工程资源管理器中右键点击该工作簿,选择插入->模块,然后在模块中输入以下代码:
- Sub SplitWorkbook()
- Dim wb As Workbook
- Dim ws As Worksheet
- Dim newWB As Workbook
- Dim newWS As Worksheet
- Dim lastRow As Long
- Dim i As Long
-
- Set wb = ThisWorkbook
-
- For Each ws In wb.Worksheets
- lastRow = ws.Cells(Rows.Count, "D").End(xlUp).Row
- For i = 2 To lastRow
- ' Check if new workbook needs to be created
- If newWB Is Nothing Or ws.Cells(i, "D").Value <> newWS.Cells(2, "D").Value Then
- ' Create new workbook and copy worksheet
- Set newWB = Workbooks.Add
- ws.Copy Before:=newWB.Worksheets(1)
- Set newWS = newWB.Worksheets(1)
- newWS.Name = ws.Cells(i, "D").Value
- End If
-
- ' Copy row to new worksheet
- ws.Rows(i).Copy newWS.Rows(newWS.Cells(Rows.Count, "A").End(xlUp).Row + 1)
- Next i
-
- ' Save new workbook
- newWB.SaveAs Filename:=wb.Path & "" & ws.Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook
- newWB.Close SaveChanges:=False
- Set newWB = Nothing
- Next ws
- End Sub
复制代码
然后在工作簿中按下Alt+F8,选择SplitWorkbook,并点击运行。
这个宏会遍历每个工作表,然后按照D列区域字段将每个工作表拆分成多个工作簿,每个新工作簿中包含了每个区域的数据,同时新工作簿中也有5个子工作表且工作表的名称和原工作簿保持一致。最后每个新工作簿都会保存在原工作簿的同一目录下。 |
|