下面说下在一个工作簿里把里面的一个工作表依据实际需求的条件内容,快速拆分成多个工作表方法。

1.打开excel文件,现在需要依据地区和国家这个条件,分别单独生成不同的工作表出来,最原始的方法是手动新建工作表一个一个的内容复制粘贴,这方法内容比较少是可行的,当倘若一个工作表里有几百个内容依据条件分别生成n个独立的工作表,工作效率低,不建议使用手动新建工作表复制粘贴内容;

2.右键工作表,选择查看代码打开VBA窗口,复制输入以下代码带窗口中;


Sub 工作表拆分2() '通过筛选方法完成需求,速度快,但当有合并单元格时就不能用。读者可以根据实际情况选用

Dim SplitCol As String, ColNum As Integer, HeadRows As Byte, arr, lastrow, i, ShtIndex, only As New Collection, Rng As Range

SplitCol = "D" '指定拆分条件所在列

HeadRows = 1 '指定标题行数,该区域不参与拆分

If HeadRows >= ActiveSheet.UsedRange.Rows.Count Then Exit Sub '如果指定的标题行大于已用区域行数则退出程序

ColNum = Cells(1, SplitCol).Column '将列标转换成数字

lastrow = ActiveSheet.UsedRange.Rows.Count '获取当前表已用区域的行数

arr = Range(Cells(HeadRows + 1, SplitCol), Cells(lastrow, SplitCol)).Value '将拆分列的数据赋与变量arr

On Error Resume Next

If ActiveSheet.FilterMode Then Cells.AutoFilter '如果处于筛选模式,那么去除筛选模式

For i = 1 To lastrow - HeadRows '遍历arr所有数据

'提取其中的不重复值

If Len(arr(i, 1)) > 0 Then only.Add CStr(arr(i, 1)), CStr(arr(i, 1))

Next i

ShtIndex = ActiveSheet.Index '获取当前表位置

On Error Resume Next

For i = 1 To only.Count

Debug.Print Sheets(only(i)).Name '获取与only对象中每个元素同名的工作表名(用意为判断是否存在该工作表)

If Err = 0 Then MsgBox "当前工作簿已存在与待拆分项目同名的工作表“" & only(i) & "”,暂无法拆分", 64, "友情提示": Exit Sub

Err.Clear

Next i

Application.ScreenUpdating = False '关闭屏幕更新,加快执行速度

Application.Calculation = xlCalculationManual '调为手动计算,加快执行速度

For i = 1 To only.Count '创建工作表,表的数量与表名由only对象中不重复值而定

Sheets.Add After:=Sheets(Sheets.Count) '创建

Sheets(Sheets.Count).Name = only(i) '命名

Sheets(ShtIndex).Rows("1:" & HeadRows).Copy Sheets(Sheets.Count).Cells(1, 1) '复制标题

Next i

Sheets(ShtIndex).Select '返回待拆分工作表

For i = 1 To only.Count '遍历Collection对象所有成员。Collection对象包括了所有拆分条件,即工作表名

'对拆分条件所在列进行筛选,筛选条件是Collection对象中的成员,本例中是部门名称

Range(Cells(HeadRows, SplitCol), Cells(lastrow, SplitCol)).AutoFilter Field:=1, Criteria1:=only(i)

Set Rng = Range(Cells(HeadRows + 1, SplitCol), Cells(Rows.Count, SplitCol).End(xlUp)).SpecialCells(xlCellTypeVisible).EntireRow '引用筛选后的数据(整行)

With Sheets(only(i)).UsedRange.Rows(Sheets(only(i)).UsedRange.Rows.Count + 1) '引用拆分后的工作表的已用区域下一行

Rng.Copy .Cells(1) '第一次复制,复制所有数据,仅取其格式

.Cells = Rng.Value '第二次复制,仅复制数值

End With

Next

Cells.AutoFilter '去除筛选模式

Application.ScreenUpdating = True '恢复屏幕更新

Application.Calculation = xlCalculationAutomatic '恢复自动计算

MsgBox "拆分完毕!", 64, "友情提示"

End Sub


3.修改好代码之后,按下快捷键F5键运行宏命令即可快速完成工作表的拆分;

4.宏命令说明,SplitCol = "a" '指定拆分条件所在列,这里以国家地区为拆分条件,它在D列,修改为SplitCol = "D" , 而HeadRows = 1 代表指定标题行数,该区域固定不进行拆分,即拆分出来的每个工作表的首行都会有一个一样的表头,拆分之后,之后再对拆分出来的工作表进行格式修饰下,按住shift键鼠标点击多选不要的工作表右键进行删除即可。

excel一个工作表拆分多个https://www.zhihu.com/video/1247151257426538496

离开当前屏幕的判断方法_EXCEL 一个工作表如何快速拆分多个工作表的方法相关推荐

  1. excel首行固定_EXCEL 一个工作表如何快速拆分多个工作表的方法

    下面说下在一个工作簿里把里面的一个工作表依据实际需求的条件内容,快速拆分成多个工作表方法. 1.打开excel文件,现在需要依据地区和国家这个条件,分别单独生成不同的工作表出来,最原始的方法是手动新建 ...

  2. 离开当前屏幕的判断方法_掌中宝系列之EMG电动门调整方法

    EMG电动门调整方法 1.不带液晶屏的EMG电动门调整方法 就地操作开关按钮图 首先设定进入learn 模式(调试模式) 先按下LT按钮并保持,同时把S1拔钮开关移至Learn位置(注意顺序不能反,一 ...

  3. 离开当前屏幕的判断方法_Android App内存泄露测试方法总结

    喜欢我的文章,欢迎关注微信公众号「软件测试艺术」,一起学习提高. 1. 内存泄露 Android系统为每一个运行的程序都指定了一个最大运行内存,超过这个值则会触发OOM机制,反应在界面就是闪退. Cr ...

  4. java删除通用方法_一个比较通用的java删除文件和文件夹的方法

    在项目中如果有文件上传的时候,通常情况下,我们需要对上传的文件进行维护,一般的维护就是删除文件或删除文件夹和文件夹下的文件,下面的方法则实现了这个需求: /** * 删除文件夹和文件夹下的文件 * @ ...

  5. 中随机打乱序列的函数_excel函数应用:如何快速制作考生座次分配表

    编按:哈喽,大家好!春节已经结束了,不少公司在正式开工后,一般会对员工进行岗位技能考试.既然要考试,自然就会涉及到考生座位安排的问题,今天我们就一起来学习一下,如何在excel中快速地制作考生的座位分 ...

  6. Java两同_java:一个类实现的两个接口里都有同一个方法(名),怎么处理?

    不一定,关键要看子类是否是抽象类. 如果子类是非抽象类,则必须实现接口中的所有方法: 如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在! 1.抽象类定义 抽象类往往用来 ...

  7. 关于反射调用方法的一个log

    [Loaded sun.reflect.GeneratedMethodAccessor197 from __JVM_DefineClass__]  请问报这个是什么意思? 这是Sun实现的Java标准 ...

  8. * 四、要求写一个方法:method。该方法要求传入一个数字n(n要小于10), * 该方法能够计算得到所有各位上的数字不超过n且每一位的数字都不重复的三位数的个数。

    package Day04;/*** 四.要求写一个方法:method.该方法要求传入一个数字n(n要小于10),* 该方法能够计算得到所有各位上的数字不超过n且每一位的数字都不重复的三位数的个数.* ...

  9. 多方法调用 一个出错 集体回滚_一个@Transaction哪里来这么多坑?

    前言 在之前的文章中已经对Spring中的事务做了详细的分析了,这篇文章我们来聊一聊平常工作时使用事务可能出现的一些问题(本文主要针对使用@Transactional进行事务管理的方式进行讨论)以及对 ...

最新文章

  1. 数学知识--Methods for Non-Linear Least Squares Problems(第三章)
  2. Matlab如何读取文本文件
  3. qgridlayout 动态刷新
  4. php td内容换行,table单元格内容过多换行显示
  5. linux vi脚本,linux下vi(vim)的新的用法总结
  6. python apscheduler 动态_基于Flask-APScheduler实现添加动态定时任务
  7. setInterval()与setTimeout()计时器
  8. IntelliJ IDEA创建Java-Web项目
  9. java毕业设计万科集团社区管理系统mybatis+源码+调试部署+系统+数据库+lw
  10. 软件智能:aaas系统 后天八卦-aaas作为组织者的数据结构及其运行时
  11. 【UVA12235 Help Bubu】
  12. 单元格下拉全选快捷键_复制全选快捷键是什么
  13. 对校招生培养工作的建议_19、贵单位对我院学生培养工作有何建议:
  14. 网吧WEB、游戏、影视服务器应用需求分析
  15. 安全防御(二)--- 防火墙域间双向NAT、域内双向NAT、基于VRRP的双机热备
  16. RNA-seq流程学习笔记(7)-使用Hisat2进行序列比对
  17. 计算机二级考试不及格看不到分数吗,计算机二级查不到成绩是不是没过,不及格有分数吗...
  18. 使用线程池优化多线程编程
  19. 手把手教你用 VuePress 快速搭建个人技术博客~
  20. Hurst指数python实现

热门文章

  1. php中隐藏和展开文章,手机端第一屏页面文章的展开和隐藏_html/css_WEB-ITnose
  2. 银行计算机记账比赛,在银行柜台业务技术比赛颁奖仪式上的讲话(一).doc
  3. go语言基础到提高(12)-函数类型与函数变量
  4. luogu p4767 邮局
  5. 【NLP】文本分类还停留在BERT?对偶对比学习框架也太强了
  6. 【NLP】Prompt Learning-使用模板激发语言模型潜能
  7. 【NLP】基于TF-IDF和KNN的模糊字符串匹配优化
  8. 【数据竞赛】Kaggle实战之特征工程篇-20大文本特征(下)
  9. 【算法基础】数据结构导论第七章-排序.pptx
  10. 李航老师《统计学习方法》的代码实现、课件、作业等相关资源的最全汇总