Excel精英培训网

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

[已解决]根据部门拆分表至工作簿

[复制链接]
发表于 2014-11-20 14:34 | 显示全部楼层 |阅读模式
本帖最后由 电子表 于 2014-11-20 15:15 编辑

根据部门拆分表格内容至工作簿,每个部门独立工作簿,以部门来命名。要求格式与表格式相同。请论坛的朋友帮忙看看,谢谢!

最佳答案
2014-11-20 15:27
Sub Click()
    Dim r&, f$, p$
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    p = ThisWorkbook.Path & "\"
    r = Range("a65536").End(xlUp).Row
    Do While r <> 1
        r = Cells(r, 1).End(xlUp).Row
        f = Cells(r, 1)
        Cells(r, 1).CurrentRegion.Copy
        Workbooks.Add
        ActiveSheet.Paste
        ActiveWorkbook.SaveAs p & f
        ActiveWorkbook.Close
        r = Cells(r, 1).End(xlUp).Row
    Loop
    MsgBox "ok"
End Sub

根据部门内容拆分表格至工作簿2.rar (14.71 KB, 下载次数: 41)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-11-20 14:47 | 显示全部楼层
回复

使用道具 举报

发表于 2014-11-20 15:07 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-11-20 15:09 | 显示全部楼层
本帖最后由 电子表 于 2014-11-20 15:14 编辑

根据部门内容拆分表格至工作簿.rar (8.49 KB, 下载次数: 9)
回复

使用道具 举报

发表于 2014-11-20 15:27 | 显示全部楼层    本楼为最佳答案   
Sub Click()
    Dim r&, f$, p$
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    p = ThisWorkbook.Path & "\"
    r = Range("a65536").End(xlUp).Row
    Do While r <> 1
        r = Cells(r, 1).End(xlUp).Row
        f = Cells(r, 1)
        Cells(r, 1).CurrentRegion.Copy
        Workbooks.Add
        ActiveSheet.Paste
        ActiveWorkbook.SaveAs p & f
        ActiveWorkbook.Close
        r = Cells(r, 1).End(xlUp).Row
    Loop
    MsgBox "ok"
End Sub

根据部门内容拆分表格至工作簿2.rar (14.71 KB, 下载次数: 41)
回复

使用道具 举报

发表于 2014-11-20 17:11 | 显示全部楼层
本帖最后由 dsmch 于 2014-11-20 18:06 编辑

Sub Macro1()
Dim wb As Workbook, arr, brr, i&
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wb = GetObject(ThisWorkbook.Path & "\1.xls")
arr = wb.Sheets(1).UsedRange
wb.Close 0
For i = 1 To UBound(arr)
    If arr(i, 1) Like "*部门" Then
        s = s + 1
        With Workbooks.Open(Filename:=ThisWorkbook.Path & "\1.xls")
            .Sheets(1).Activate
            n = Cells(i + 1, 1).CurrentRegion.Rows.Count
            If s = 1 Then GoTo 100
            Cells(i + 1, 1).CurrentRegion.Copy .Sheets(1).[a2]
100:
            Cells(n + 2, 1).Resize(20000, 100).Clear
            .SaveAs Filename:=ThisWorkbook.Path & "\" & arr(i, 1) & ".xls"
            Workbooks(arr(i, 1)).Close 1
        End With
    End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

发表于 2014-11-20 17:14 | 显示全部楼层
本帖最后由 dsmch 于 2014-11-20 18:08 编辑

若要格式完全相同,通过一工作簿操作拆分工作簿,另存为

新建文件夹.zip

12.23 KB, 下载次数: 20

回复

使用道具 举报

 楼主| 发表于 2014-11-20 18:03 | 显示全部楼层
dsmch 发表于 2014-11-20 17:14
若要格式完全相同,通过一工作簿操作拆分工作簿,另存为

dsmch好思路,我还要消化一下!谢谢您的指导!如果用这种方法生成一样的格式,部门名称没有什么共同点,是否应考虑用序号比较合适!

点评

代码和附件已更新  发表于 2014-11-20 18:08
回复

使用道具 举报

发表于 2014-11-20 19:56 | 显示全部楼层
爱疯 发表于 2014-11-20 15:27
Sub Click()
    Dim r&, f$, p$
    Application.ScreenUpdating = False

这种方法并不能实现格式完全相同,如列宽、行高等

评分

参与人数 1 +1 收起 理由
电子表 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-11-20 20:40 | 显示全部楼层
dsmch 发表于 2014-11-20 19:56
这种方法并不能实现格式完全相同,如列宽、行高等

谢谢!是的,要单独复制行高和列宽
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 00:40 , Processed in 0.500969 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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