VBA学习练习-拆分成多个工作簿

实际运用过程中,尤其是运营岗,经常收到一份总的报表,需要分区域下发,可以用以下VBA将数据按指定列拆分成多个工作簿

原理:

1、拆分成多个sheet

2、根据sheet建工作表并copy

3、删除sheet

Sub 拆分成多个工作簿()
'将报表按指定列分类并保存到各工作表中
Dim i, c As Long, bj As String, rng As Range, arr(), myrows, lc As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
myrows = Application.InputBox("请输入内容从第几行开始")    '分类处理的第一条记录在第几行
i = myrows
c = Application.InputBox("请输入拆分列号")
arr = Range("A1").CurrentRegion
lc = UBound(arr, 2)

bj = Worksheets(1).Cells(i, c).Value
Do While bj <> ""                                                 '直到成绩表中C列的单元格为空单元格时终止循环
    
    On Error Resume Next                                          '当没有对应工作表时,忽略下一行代码引起的运行错误
    If Worksheets(bj) Is Nothing Then                                                                   '判断是否已有工作表,没有就新建并写入表头
        Worksheets.Add after:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = bj
        Worksheets(1).Cells(1, "A").Resize(myrows - 1, lc).Copy Worksheets(bj).Cells(1, "A")
    End If
    
    Set rng = Worksheets(bj).Range("A1048576").End(xlUp).Offset(1, 0) '确定班级工作表中A列的第一个空单元格,作为写入成绩记录的目标区域
    Worksheets(1).Cells(i, "A").Resize(, lc).Copy rng
    i = i + 1
    bj = Worksheets(1).Cells(i, c).Value
Loop

'MsgBox "已分类到各sheetta"

Dim folder As String
folder = ThisWorkbook.Path & "\新建文件夹"            		'保存工作簿文件的目录
If Len(Dir(folder, vbDirectory)) = 0 Then MkDir folder		'选择是否新建该文件夹
Dim sht As Worksheet
For Each sht In Worksheets
    sht.Copy												'复制工作表到工作簿
    ActiveWorkbook.SaveAs folder & "\" & sht.Name & ".xlsx"	'保存工作簿并命名
    ActiveWorkbook.Close
Next

Dim sht1 As Worksheet
For Each sht1 In Worksheets
    If sht1.Name <> Worksheets(1).Name Then
        sht1.Delete
    End If
Next

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值