Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2466|回复: 1

请教关于分类汇总后另存为文件的VBA

[复制链接]
发表于 2011-4-19 08:37 | 显示全部楼层 |阅读模式
5学分
现在已经做好了分类汇总,需要将结果分给各个机构,所以要粘贴成单独的文件,文件名按机构编号命名。
现有数据:
员工编号        员工姓名        机构编号        员工角色        总工作量
012365        员工甲        1234        普通员工        154
012487        员工乙        1234        普通员工        253
059875        员工丙        1234        普通员工        198
036548        员工丁        1234        普通员工        235
                                    1234 汇总                     840
056887        张三        5678        普通员工        654
096589        李四        5678        普通员工        487
                                 5678 汇总                    1141

想要的结果:
文件1,文件名1234.xls
员工编号        员工姓名        机构编号        员工角色        总工作量
012365        员工甲        1234        普通员工        154
012487        员工乙        1234        普通员工        253
059875        员工丙        1234        普通员工        198
036548        员工丁        1234        普通员工        235
                                1234 汇总         840
文件2,文件名5678.xls
员工编号        员工姓名        机构编号        员工角色        总工作量
056887        张三        5678        普通员工        654
096589        李四        5678        普通员工        487
                                5678 汇总         1141

求高手指教。先谢谢了!!!

例子.rar

4.39 KB, 下载次数: 20

 楼主| 发表于 2011-4-19 09:22 | 显示全部楼层
回复 zhongzuo 的帖子

在其他论坛得到了方法。分享给各位,并感谢作者。
Sub Macro1()
    Dim arr, brr(), rng As Range, sh As Worksheet, i&, m&
    Set sh = ActiveSheet
    arr = Range("A1").CurrentRegion
    ReDim brr(1 To UBound(arr))
    Set rng = [a1:e1]
    m = 1
    brr(m) = 1
    For i = 3 To UBound(arr)
        If InStr(arr(i, 3), "汇总") Then
            m = m + 1
            brr(m) = i
        End If
    Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For i = 1 To m - 1
        With Workbooks.Add(xlWBATWorksheet)
            rng.Copy .ActiveSheet.[a1]
            sh.Cells(brr(i) + 1, 1).Resize(brr(i + 1) - brr(i), 5).Copy .ActiveSheet.[a2]
            .SaveAs Filename:=ThisWorkbook.Path & "\" & Split(arr(brr(i + 1), 3), " 汇总")(0) & ".xls"
            .Close
        End With
    Next
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "ok"
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-25 08:35 , Processed in 0.387085 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表