ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 工作簿拆分问题(要求保留其它工作表)

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-17 10:20 | 显示全部楼层
圆满解决问题,万分谢谢fdd~

[ 本帖最后由 Hoer 于 2009-2-17 10:55 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-2-17 17:24 | 显示全部楼层
原帖由 Hoer 于 2009-2-17 10:20 发表
圆满解决问题,万分谢谢fdd~


Option Explicit
Sub addWK2()
    Dim dic, temp, arr, tempWK, temp2
    Dim rng As Range
    Dim strArea As String
    Const BYSHNAME As String = "数据表" '可以修改根据哪一个工作表拆分工作簿
   
    Set dic = CreateObject("scripting.dictionary") '字典
    '下面一句代码:设置上面设置的工作表中的哪一列的内容拆分工作簿
    Set rng = ThisWorkbook.Sheets(BYSHNAME).Range("b2:b" & ThisWorkbook.Sheets(BYSHNAME).Cells(65536, 2).End(xlUp).Row)
    For Each temp In rng.Cells '这个for循环实现该列的不重复值的筛选
        If Not dic.exists(temp.Value) Then
            dic.Add temp.Value, ""
        End If
    Next
   
    arr = dic.keys '返回此列不重复值的数组
   
   
    For Each temp In arr '这个For循环实现按照不重复数组的内容新建工作簿,并删除不应有的内容
        ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & temp & ".xls" '以当前temp的值为新工作簿的名称,备份当前工作簿
        Set tempWK = Workbooks.Open(ThisWorkbook.Path & "\" & temp & ".xls") '打开以temp的值为名称的工作簿
        strArea = "" '用于储存所有需要删除的行的地址字符串
        For Each temp2 In rng.Cells '这个for循环是比较源工作簿中拆分依据的工作表中,拆分依据的那一列与当前temp值是否相同,删除不相关内容
            If temp2 <> temp Then
                If strArea <> "" Then
                    strArea = strArea & ","
                End If
                strArea = strArea & tempWK.Sheets(BYSHNAME).Cells(temp2.Row, temp2.Column).EntireRow.Address
            End If
        Next
        tempWK.Sheets(BYSHNAME).Range(strArea).Delete
        tempWK.Save
        tempWK.Close
    Next
   
    Set dic = Nothing
    Set rng = Nothing
    ThisWorkbook.Sheets(1).Select
End Sub

[ 本帖最后由 fdd 于 2009-2-17 17:25 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-8-27 08:57 | 显示全部楼层
你好幽谷专家
如果上个例子中的名称由甲乙丙改为,北京abc公司,北京市XXX公司,江苏HGF公司,河北XXX等等
想把他们拆分到以北京 江苏 等工作表中
这些工作表在拆分前都已经存在不删除,和数据表在一个工作薄中,改如何修改呢?
谢谢

TA的精华主题

TA的得分主题

发表于 2009-10-13 16:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-6 19:41 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-11-21 19:37 | 显示全部楼层
fdd 发表于 2009-2-17 10:13
链接的问题是您的函数或代码本身的问题。程序还不可能智能到去判断函数或代码内容并根据此内容去做相应 ...

你好,我有个问题,现在是除了“数据表”拆分,其他两个表都原封不动,那如果其他两个表也按照数据表某一列拆分,然后还是拆成一个工作簿里面,包含“数据表”“说明表”“备注表”呢(假设另外两张表也有数据表中的那一列)?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 15:35 , Processed in 0.039707 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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