拆分一个单元表为多个单元簿

方案1(数据透视表实现)

  • “数据透视表”按指定字段统计,获得数据透视表

  • 点击数据透视表中指定字段的值打开对应值的明细表

  • 批量修改已打开的工作表名

    Sub changename()
    MsgBox “共有sheets” & Worksheets.Count & “个”
    For i = 9 To (Worksheets.Count)
    nname = Worksheets(i).Range(“B2”).Value ‘Range(“B2”)为要作为表名的单元格的位置
    If nname <> “” Then
    Worksheets(i).Name = nname
    Else
    MsgBox “此处为空”
    Worksheets(i).Name = “default”
    End If
    Next
    MsgBox “done!”
    End Sub

  • 拆分工作表为多个工作簿(同样适用于方案二)

    Sub Splitbook()
    Dim xPath As String ‘工作簿所在路径
    xPath = Application.ActiveWorkbook.Path ‘赋值为当前活跃工作簿所在位置
    Application.ScreenUpdating = False ‘关闭更新以提高运行效率
    Application.DisplayAlerts = False ‘关闭关闭excel时弹出的提示框
    For Each xWs In ThisWorkbook.Sheets ‘遍历工作簿中的工作表
    xWs.Copy ‘复制工作表
    Application.ActiveWorkbook.SaveAs Filename:=xPath & “\” & xWs.Name & “.xls” ‘保存工作表到当前工作簿所在目录
    Application.ActiveWorkbook.Close False ‘关闭工作簿但不保存
    Next
    Application.DisplayAlerts = True ‘恢复设置
    Application.ScreenUpdating = True
    End Sub

方案2(待实现.用VBA实现)

  • 选取待拆分工作表中关键字列
  • 创建一个字典对象,用来存储关键字值与其统计
  • 遍历关键字列

    • 每当有新值出现

      • 在字典中插入一组键值对
      • 以该值为表名在当前表之后新建一个工作表
      • 同时复制当前行到新表,代码如下
        '复制行到目标位置(取首个单元格即可)
        sheets("oldsheet").range(cells(2,1),cells(2,lastcolumn)).copy _destination:= sheets("newsheet").range[cells(2,1)]
        '获取主表最后一列非空列的列序号
        lastcolumn = sheets("oldsheet").cells(2,225).end(xlToLeft).column
        '获取主表最后一行非空行的行序号
        lastrow = sheets("oldsheet").cells(65536,1).end(xlUP).row
    • 遍历到的值在字典中已存在key,则对应item加1,同时复制该行到对应表的非空的最后一行之后

  • 拆分单元表到单元簿(同方案1最后一步)

方案3(用ADO和SQL直接查询拆分)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多薄多表合并——excel 外接程序插件 使 用 说 明 一、功能: 1、多薄合并:将某一文件夹或当前文件夹下所有工作薄合并到一个自动新建的“汇总表”工作薄中。每个工作薄中可含多个不同的工作表,工作表与工作表一一对应(合并)。有“保留重复行(默认)”、“去除重复行”两种方式。 默认合并当前文件夹下的所有工作薄;在启动excel后(未保存)的新工作薄中点击该按钮则打开“文件夹选择”对话框。 2、多表合并:将当前工作薄中所有工作表合并到一个自动生成且位于最后的“汇总表”工作表中。有“保留重复行(默认)”、“去除重复行”两种方式。 3、清除数据:清除当前工作表或当前工作薄中所有工作表数据。 默认“取消”按钮(即按Enter后)仅清除当前工作表中的数据。 4、分类汇总:将所选区域第一列相同行的各列数据进行汇总(求和),并将汇总结果放置到所选目标区域。汇总结果为第一列不再有重复行,即第一列“去除重复行”,其后各列数据求和或文本联接。 5、拆分表格:将所选区域第一列中不同行拆分为许多工作表,以第一列各行内容为工作表名称,并复制其后面各列内容。 6、选择查询:在所选区域第一列中查找,并将查找结果(符合查询条件的许多行)放置到所选择的目标区域。 7、多薄汇总——求和(默认)、全部求和、平均、计数:将某一文件夹或当前文件夹下的所有工作薄中的当前工作表的数据按照所选择的单元格区域汇总(求和、平均、计数)到一个自动新建的“汇总表”工作薄中。工作表与工作表一一对应,单元格与单元格一一对应汇总(求和、全部求和、平均、计数)数据。。 8、多表汇总——求和(默认)、全部求和、平均、计数:将某一工作薄中所有工作表数据,按照所选择的单元格区域进行汇总(求和、平均、计数)。 9、插入空行:在当前单元格下隔行插入空行。 10:删除空行:删除当前单元格以下的所有空行或0值行。 11、插入表头:在所选择的表头区域下方,隔行插入表头(工资条)。 12、批量打印:打印某一文件夹(或当前文件夹)下的所有工作薄,可以选择打印“整个工作薄”、按名称“选定工作表”、按位置“指定工作表”,可选择“打印份数”、“逐份打印”。 二、注意: “多薄合并、多表合并”:要合并的工作薄(或工作表)格式必须一致;工作表一一对应;所有工作表的表头行数必须相同;仅复制表头以下的行;多薄多表合并,具有“去除重复行”功能,即一行的各列数据均相同的行仅保留一行;工作表下方不要有备注行。 三、安装使用: 1、 安装时可能受360警告或拦截,这是正常提示,选择“添加信任”或“直接运行”即可。 安装完成后,在excel203工具栏或excel2010“多薄多表”选项卡中会有“多薄合并、多表合并、清除数据、分类汇总、拆分表格、选择查询”等功能按钮。(见下图) 2、默认安装位置为C:\WINDOWS\mergebooks.dll ; 如果电脑进行了多用户设置,如电脑用户为lcb,可把mergebooks.dll复制到C:\Documents and Settings\lcb\Application Data\Microsoft\AddIns\mergebooks.dll 中。 3、Excel2003调出“多薄多表”方法: 如果在excel2003工具栏中没有以上按钮,则按如下方法进行: 第一步(添加到COM加载项):打开excel,在“工具栏”上点击“COM加载项”。调出如下窗口。 把“可用加载项”中的“mergebooks.dll” (打勾),此时excel2003工具栏中将出现按钮;如果没有出现,则继续点击上图中的“添加”按钮,进入以下窗口: 在右边窗口中选择Mergebooks.dll——确定——返回(第一个窗口)——(继续)确定返回——关闭excel。 第二步(添加到工具栏):再次打开excel2003,点击“COM加载项”进入第一个窗口,把左边窗口中的“Mergebooks”(打勾)——确定(返回),即可出现在工具栏中。 4、Excel2010调出“多薄多表”方法:文件——选项——自定义功能区——(右边)“多薄多表”(打勾) 开发者:hu73248@163.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值