ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 907|回复: 13

[求助] 工作簿按明细sheet的固定字段进行拆分,如何自动化实现

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-10-10 17:03 | 显示全部楼层 |阅读模式
工作簿有三类sheet组成:几个明细sheet、几个汇总sheet(根据明细sheet的公式计算)、参照sheet,先需要按照明细sheet中的一级部门、二级部门或者人员姓名拆分工作簿,拆分后的工作簿结构与拆分前一致,只是几个明细sheet中的部门或者人员姓名字段里只剩下拆分后的单一内容,这个拆分是否有自动化实现的方法?

TA的精华主题

TA的得分主题

发表于 2023-10-11 08:43 | 显示全部楼层
方法肯定有,或者上传你的附件具体描述你的需求,或者到我的主题里面去找找,几个拆分工具一定有一个适合你的

TA的精华主题

TA的得分主题

发表于 2023-10-11 08:56 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-10-11 15:34 | 显示全部楼层
本帖最后由 sunyao0819 于 2023-10-11 17:06 编辑

已上传附件。
1、拆分字段:Team
2、拆分sheet:Summary、Contract、Revenue、回款
3、要求:按Team字段拆分成N个工作簿,拆分后的各工作簿结构保持不变

附件.zip

24.25 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2023-10-12 10:45 | 显示全部楼层
需要拆分的三个工作表的结构不一致,拆分字段所在列不一致,就比较麻烦,先留个记号呗

TA的精华主题

TA的得分主题

发表于 2023-10-12 12:43 | 显示全部楼层
3190496160 发表于 2023-10-12 10:45
需要拆分的三个工作表的结构不一致,拆分字段所在列不一致,就比较麻烦,先留个记号呗

表格确实乱,不在一列倒是可以用match取值,第一个表格还不在同一行,

TA的精华主题

TA的得分主题

发表于 2023-10-12 13:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
LZ这要求有点问题,三个分表的格式不一样,数据没办法整合呀,写了一半写不下去了
我都没看太明白,表格结构不变,又以哪个为准?你自己模拟下效果看看,

TA的精华主题

TA的得分主题

发表于 2023-10-12 15:14 | 显示全部楼层
沈默00 发表于 2023-10-12 13:04
LZ这要求有点问题,三个分表的格式不一样,数据没办法整合呀,写了一半写不下去了
我都没看太明白,表 ...

楼主应该是要求一薄多表,拆分为多薄多表吧?

TA的精华主题

TA的得分主题

发表于 2023-10-12 15:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 拆分()
Application.ScreenUpdating = False
Dim ar As Variant
Dim i As Long, r As Long, rs As Long
Dim br()
Dim d As Object
Set d = CreateObject("scripting.dictionary")
For Each sh In Sheets(Array("Summary", "Contract", "Revnue"))
    If sh.Name = "Summary" Then
        ks = 4
        js = 17
        lh = 1
    ElseIf sh.Name = "Contract" Then
        ks = 3
        js = 9
        lh = 6
    ElseIf sh.Name = "Revnue" Then
        ks = 3
        js = 10
        lh = 8
    End If
    r = sh.Cells(sh.Rows.Count, lh).End(xlUp).Row
    ar = sh.Range(sh.Cells(1, 1), sh.Cells(r, js))
    For i = ks To UBound(ar)
        If Trim(ar(i, lh)) <> "" Then
            d(Trim(ar(i, lh))) = ""
        End If
    Next i
Next sh
For Each k In d.keys
    m = 0
    For Each sh In Sheets(Array("Summary", "Contract", "Revnue"))
        m = m + 1
        If sh.Name = "Summary" Then
            ks = 3
            js = 17
            lh = 1
        ElseIf sh.Name = "Contract" Then
            ks = 2
            js = 9
            lh = 6
        ElseIf sh.Name = "Revnue" Then
            ks = 2
            js = 10
            lh = 8
        End If
        r = sh.Cells(sh.Rows.Count, lh).End(xlUp).Row
        ar = sh.Range(sh.Cells(1, 1), sh.Cells(r, js))
        n = 0
        ReDim br(1 To UBound(ar), 1 To js)
        For i = ks To UBound(ar)
            If Trim(ar(i, lh)) = k Then
                n = n + 1
                For j = 1 To UBound(ar, 2)
                    br(n, j) = ar(i, j)
                Next j
            End If
        Next i
        If m = 1 Then
            sh.Copy
            Set wb = ActiveWorkbook
        Else
            sh.Copy after:=wb.Worksheets(wb.Worksheets.Count)
        End If
        With wb.Worksheets(sh.Name)
            .Range(.Cells(ks, 1), .Cells(r, js)).Borders.LineStyle = 0
            .Range(.Cells(ks, 1), .Cells(r, js)) = Empty
            If n > 0 Then
                .Cells(ks, 1).Resize(n, UBound(br, 2)) = br
                .Cells(ks, 1).Resize(n, UBound(br, 2)).Borders.LineStyle = 1
            End If
        End With
    Next sh
    wb.SaveAs Filename:=ThisWorkbook.Path & "\拆分文件\" & k & ".xlsx"
    wb.Close
Next k
Application.ScreenUpdating = True
MsgBox "ok!"
End Sub

TA的精华主题

TA的得分主题

发表于 2023-10-12 15:18 | 显示全部楼层
仅供参考
拆分.rar (35.15 KB, 下载次数: 7)

评分

1

查看全部评分

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 13:20 , Processed in 0.036199 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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