VBA代码实例---一个工作表拆分为N个工作表
来源:互联网 发布:dede 修改服务器域名 编辑:程序博客网 时间:2024/06/04 22:09
这是一个常用而且经典的例子:根据内容,把一个工作表中的内容,拆分到N个工作表中,并根据内容命名新建的工作表。
¤主要知识点¤
1、影响代码执行闪屏以及提示框的处理:
Application.ScreenUpdating = FalseApplication.DisplayAlerts = FalseApplication.DisplayAlerts = TrueApplication.ScreenUpdating = True
2、工作表的新建,命名,删除操作;
3、单元格区域的内容复制方式;
4、IF分支语句和For循环语句的使用;
¤实例¤
新建工作表,把员工信息复制到对应的以部门命名的工作表中。
¤实现代码¤
Option ExplicitSub 拆分工作表() Application.DisplayAlerts = False '不显示错误提示框 Application.ScreenUpdating = False '不闪屏 Dim i As Integer '辅助工作表变量 Dim sh As Worksheet '删除多余的工作表 If Sheets.Count > 1 Then For i = Worksheets.Count To 2 Step -1 Worksheets(i).Delete Next i End If '对信息表中数据按照部门排序,之后按照部门拆分进新的工作表 Dim irow As Integer '定义一共需要处理的行号 Dim istart As Integer '定位起始行数变量 irow = Range("A" & Rows.Count).End(xlUp).Row '计算一共需要处理的行号 If irow > 2 Then Range("a3:H" & irow).Sort Range("f2"), xlAscending '对信息区域进行排序,不能含标题 istart = 3 For i = 3 To irow With Worksheets("员工信息表") '指定活动工作表 If .Range("f" & i).Value <> .Range("f" & i + 1).Value Then '判断是否为同一部门 Worksheets.Add after:=Worksheets(Sheets.Count) '新建工作表 Set sh = Worksheets(Worksheets.Count) '指定工作表给变量 sh.Name = .Range("f" & i).Value '以部门命名工作表 .Range("a1:h2").Copy sh.Range("a1:h2") '复制标题到新建工作表中 .Range("a" & istart & ":h" & i).Copy sh.Range("a3") '复制内容到工作表中 sh.Columns.AutoFit '设置自动列宽 istart = i + 1 End If End With Next i End If Worksheets("员工信息表").Select '回到第一个工作表 Application.ScreenUpdating = True '恢复闪屏默认设置 Application.DisplayAlerts = True '恢复提示框默认设置End Sub
Option ExplicitSub 拆分工作表2() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim i As Integer If Worksheets.Count > 1 Then For i = Worksheets.Count To 2 Step -1 Worksheets(i).Delete Next i End If Dim irow As Integer Dim k As Integer Dim sDep As String Dim sh As Worksheet irow = Range("A" & Rows.Count).End(xlUp).Row For i = 3 To irow sDep = Worksheets(1).Range("F" & i).Value On Error Resume Next '遇到错误继续,这里错误主要是未定义的工作表 Set sh = Worksheets(sDep) '这一行如果遇到工作表不存在,就会报错,返回值为err.number <> 0 If Err.Number <> 0 Then '工作表不存在,那么新建工作表,并把标题复制到新建的工作表 Set sh = Worksheets.Add(, Worksheets(1)) sh.Name = sDep Worksheets(1).Range("A1:h2").Copy sh.Range("A1") End If k = sh.Range("A1").CurrentRegion.Rows.Count + 1 '依次复制内容到工作表的行号 'sh.Range("A" & k).Resize(1, 7).Value = Worksheets(1).Range("A" & i).Resize(1, 7).Value '赋值方法 Worksheets(1).Range("A" & i & ":h" & i).Copy sh.Range("A" & k) '复制方法 sh.Columns.AutoFit '列宽自动调整 Next i Application.DisplayAlerts = True Application.ScreenUpdating = TrueEnd Sub
0 0
- VBA代码实例---一个工作表拆分为N个工作表
- VBA代码实例---多个工作表内容合并到一个工作表中
- VBA异常--运行时错误1004(将一个工作簿拆分多个工作表)
- C#将一个excel工作表根据指定范围拆分为多个excel文件
- [Excel VBA] 新建一个工作表并为其添加代码
- VBA代码实例---批量新建工作表模板
- VBA代码实例---批量新建工作表模板升级版本
- 合并多个工作簿为一个工作簿和拆分工作簿为多个工作簿
- 怎么拆分一个Excel工作簿中的多个工作表
- 怎么拆分一个Excel工作簿中的多个工作表?
- VBA代码来破解工作表保护
- VBA工作表操作
- VBA 增加工作表
- VBA实现保存Excel多个工作表中的选择区域为CSV文件
- 用VBA对一个EXCEL中的多个工作表排序
- excel将一个工作表根据条件拆分成多个工作簿、工作表
- EXCEL:为一个EXCEL文件创建多个工作表
- VBA工作表操控备忘
- Linux环境下如何终止后台进程
- python基础知识
- 盘点 | Github上的18个顶级深度学习项目
- HDU3631
- c++作业四
- VBA代码实例---一个工作表拆分为N个工作表
- 线性表之顺序存储
- 回调函数(callback)是什么?
- 怎么在浏览器网站前添加图标(图片)
- TextWatcher参数理解
- activiti 数据库核心关系表
- RadioButton界面显隐
- BAT三家的CDN情况究竟如何
- UVA.10986 Fractions Again (经典暴力)