excel拆分

  • 一、前言
  • 二、准备员工信息表测试数据
  • 三、拆分
    • 三(1):根据所在分公司列拆分为多个sheet
      • 操作步骤
        • 1. 选中要拆分的sheet,右键单击“查看代码”,如图:
        • 2. 插入如下代码:
        • 3. 运行,实现拆分为多个sheet(代码插入后,直接关闭当前代码窗口即可,无需保存)
      • 拆分后结果
    • 三(2):根据“所在分公司”列拆分为多个单独excel文件
      • 操作步骤
        • 1.插入代码
      • 拆分后结果
  • 四、没有宏菜单,如何打开?

一、前言

作为一名运维工程师,难免会遇到各种数据库数据导出需求。最近遇到要求把导出的员工信息根据分公司分组后拆分为多个sheet工作表或多个单独的excel文件。。刚开始通过oracle数据库层面琢磨了好久,不知道怎么实现(通过where条件可以,可是分公司很多呢),好吧,,能力有限,没有倒腾出来 。于是,咱干脆从excel下手。终于功夫不负有心人,通过网上资料,一顿猛操作后,居然成功了,。特别开心,今天分享给大家,话不多说,开干哈。。。

二、准备员工信息表测试数据

三、拆分

三(1):根据所在分公司列拆分为多个sheet

操作步骤

1. 选中要拆分的sheet,右键单击“查看代码”,如图:

2. 插入如下代码:


Sub 拆分为多个sheet文件()
Dim d As Object, sht As Worksheet, arr, brr, r, kr, i&, j&, k&, x&
Dim Rng As Range, Rg As Range, tRow&, tCol&, aCol&, pd&
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set d = CreateObject("scripting.dictionary")
Set Rg = Application.InputBox("提示:请选择您要拆分的列", Title:="温馨提示", Type:=8)
tCol = Rg.Column
tRow = Val(Application.InputBox("提示:请您输入表的标题总行数?"))
If tRow = 0 Then MsgBox "输入错误,程序将退出!": Exit Sub
Set Rng = ActiveSheet.UsedRange
arr = Rng
tCol = tCol - Rng.Column + 1
aCol = UBound(arr, 2)
For i = tRow + 1 To UBound(arr)
If Not d.exists(arr(i, tCol)) Then
d(arr(i, tCol)) = i
Else
d(arr(i, tCol)) = d(arr(i, tCol)) & "," & i
End If
Next
For Each sht In Worksheets
If d.exists(sht.Name) Then sht.Delete
Next
kr = d.keys
For i = 0 To UBound(kr)
If kr(i) <> "" Then
r = Split(d(kr(i)), ",")
ReDim brr(1 To UBound(r) + 1, 1 To aCol)
k = 0
For x = 0 To UBound(r)
k = k + 1
For j = 1 To aCol
brr(k, j) = arr(r(x), j)
Next
Next
With Worksheets.Add(, Sheets(Sheets.Count))
.Name = kr(i)
.[a1].Resize(tRow, aCol) = arr
.[a1].Offset(tRow, 0).Resize(k, aCol) = brr
Rng.Copy
.[a1].PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.[a1].Select
End With
End If
Next
Sheets(1).Activate
Set d = Nothing
Erase arr: Erase brr
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "拆分成功,欧耶。"
End Sub

3. 运行,实现拆分为多个sheet(代码插入后,直接关闭当前代码窗口即可,无需保存)

点击excel菜单栏的开发工具-宏-选中刚才代码函数-点击运行
找不到宏,可见本文章末尾,有添加方法哟

提示请输入要拆分的列,这里我们要拆分所在分公司“这一列,所以选中A2,点击【确定】

这里我做了一个表头行数输入,比如咱们这张表,有两行作为表头,那么在提示:“请您请输入标题总行数“时,我填写的2,点击【确定】后,就开始拆分

拆分后结果

拆分结果如下图,表示本次拆分已经成功:

三(2):根据“所在分公司”列拆分为多个单独excel文件

操作步骤

步骤与 三(1):根据“所在分公司”列拆分为多个单独sheet文件的一样,这里就不做详细图解
excel右键-查看代码-插入代码-宏-运行。注意:在运行下面代码,提示:“请输入拆分列号”,输入列号即可。
如下图,我们要拆分的是第一列,所有输入1即可:

1.插入代码

Sub 拆分为多个excel文件()Dim arr, d As Object, k, t, i&, lc%, rng As Range, c%c = Application.InputBox("提示:请输入要拆分列号", , 3, , , , , 1)
tRow = Application.InputBox("提示:请您输入表的标题总行数?")
If tRow = 0 Then MsgBox "输入错误,程序将退出!": Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
arr = [a1].CurrentRegion
lc = UBound(arr, 2)
Set rng = [a1].Resize(tRow + 1, lc)Set d = CreateObject("scripting.dictionary")
For i = tRow + 1 To UBound(arr)
If Not d.Exists(arr(i, c)) Then
Set d(arr(i, c)) = Cells(i, 1).Resize(1, lc)ElseSet d(arr(i, c)) = Union(d(arr(i, c)), Cells(i, 1).Resize(1, lc))
End IfNext
k = d.Keyst = d.Items
tt = tRow + 1
For i = 0 To d.Count - 1
With Workbooks.Add(xlWBATWorksheet)
rng.Copy .Sheets(1).[a1]t(i).Copy .Sheets(1).[a4].SaveAs Filename:=ThisWorkbook.Path & "\" & k(i) & ".xls".CloseEnd WithNextApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueMsgBox "拆分成功,欧耶"
End Sub

拆分后结果

怎么样,是不是超好用。。哈哈哈哈,还行啦。。其实还有好多小细节想完善,比如 拆分主表 “员工信息-主表”中有一个名为 备注的sheet工作表,拆分成多个分公司excel后,也想每个分公司excel表自动带有一个“备注”的sheet工作表!!!!!目前还没有研究出来,有时间再好好琢磨琢磨,到时候再更新哈,嘿嘿,哪位大神知道的话,也欢迎评论区留言哦》》》》

四、没有宏菜单,如何打开?

excel菜单的文件->选项->自定义功能区->宏,点击添加即可。

excel拆分为多个sheet工作表或多个单独的excel文件。超好用相关推荐

  1. 将excel中的一个工作表按照某列拆分成多个sheet工作表

    如何将excel中的一个工作表按照某列拆分成多个sheet工作表呢?接下来就利用VBA工具来解决这个问题. 拆分之前的工作表: 拆分之后的工作表: 操作步骤具体如下: 第一步:打开需要拆分的表格文件: ...

  2. excel将一个工作表根据条件拆分成多个sheet工作表

    本例介绍在excel中如何将一个工作表根据条件拆分成多个工作表.注意:很多朋友反映sheets(i).delete这句代码出错,要注意下面第一个步骤,要拆分的数据工作表名称为"数据源&quo ...

  3. excel拆分数据为多个工作表

    1.打开要拆分的数据的工作簿,如下图,我们想要按照分类将数据拆分为多个. 2.首先点击下图选项(Excel工具箱,百度即可了解详细下载安装信息,本文这里就不做详细解说.) ​ 3.点击[汇总拆分] ​ ...

  4. excel拆分合并技巧:将工作表合并成总表的方法

    一.各个分表合并到总表--函数流 既然在"拆分"工作表的时候,我们使用了函数的方式,那么就来再感受一下"合并"工作表的函数方式吧!依然使用之前的分表作为我们合并 ...

  5. 日常使用------利用VbA对Excel中的多个sheet工作表排序

    在excel工作簿中对有多个工作表,由于个人需要,对每个工作表中某一值的比较大小后,然后进行排序. 由于vba中字典对应值比较难以排序,所以就分为两步 第一步是提取工作表名和对应字段写到工作表中: S ...

  6. excel中多个sheet工作表拆分成独立的excel文件

    上篇说到将excel中的一个工作表按照某列拆分成多个sheet工作表,那么如何把excel中的多个sheet工作表拆分成一个一个独立的工作表呢?接下来就继续利用VBA工具来解决这个问题. 第一步:打开 ...

  7. 同时删除多个 Excel 文档前几个工作表

    概要:一个 Excel 文档经常会包含多个工作表,也就是常说的 Sheet,有时候可能文档当中前面几个工作表示我们不想要的,所以我们就需要对这些工作表进行删除.但是怎么样才能够做到同时删除多个 Exc ...

  8. 同时删除多个 Excel 文档最后几个工作表

    概要:在我们工作中 Excel 类型的文件是我们接触的比较多的一种办公文件类型了,可能有时候我们也会遇到一个这样子的场景,那就是某一些 Excel 文件当中的最后一个或者几个工作表是重复的,或者说是我 ...

  9. 拆分工作簿为多个文件_如何批将Excel的多个Sheet工作表拆分为独立的工作簿?...

    上一节我们分享了一个工作表拆分为多个工作表的方法,拆分完成之后,我们可能需要把各营业部的数据分别发送给各营业部的负责人,此时,发现各营业部的数据都在一个一个Sheet工作表中,发送是有些不方便呢. 一 ...

最新文章

  1. 【c++】指针参数是如何传递内存的
  2. 安卓学习第36课——PopupWindow
  3. 【论文解读】解读TRPO论文,深度强化学习结合传统优化方法
  4. Creative Cloud启动不了
  5. 基础学习总结(五)---baseAdapter、ContentProvider
  6. 爆款专栏《Python 黑科技》目录导航丨进度:12/50
  7. 3月12日见!红魔5G游戏手机正式官宣:全球首款144Hz游戏手机
  8. Android中resource参数变量使用
  9. 驻马店远大计算机阳业学院,电力学院
  10. 差点被祭天!狂欢618,且看研发人如何绝地求生
  11. 七年级上册计算机工作计划,七年级上册班主任工作计划
  12. 根据设计稿,用JS计算rem的值
  13. FPGA的进阶项目——开源示波器
  14. python协程多线程HTMLParser下载mp3
  15. mc java送win10_微软针对Windows 10的免费Minecraft赠品在Java播放器的午夜结束
  16. Borel probability measure space (Borel 概率测度空间)是个啥?
  17. SAP中公司间过账问题处理实例
  18. (附源码)计算机毕业设计SSM建筑工程管理系统
  19. 黑马程序员---IT行业调查报告
  20. 40 岁编程经验 30 年!支付宝资深工程师的程序人生

热门文章

  1. 李长军android语音开发_Android模仿微信录音、发送语音效果实现
  2. java不失精度的小数计算工具类
  3. ArcGIS Runtime SDK for .NET 100.0中如何执行.gpk(一)
  4. 利用shell脚本定时执行程序
  5. 【Qt】png和jpg格式的图片(二)
  6. GIF、PNG和JPG的区别
  7. 免费PNG素材站,无需注册登录无限制下载
  8. 谁说菜鸟不会数据分析python下载_《谁说菜鸟不会数据分..._30天学会Pytho_职场_小打卡...
  9. 多registerComponent页面时如何设置单例组件
  10. 浪潮英信服务器虚拟化,浪潮英信服务器NX5440M4