本例介绍了如何根据excel中的条件将一个工作表拆分成多个工作表。
注:很多朋友反映代码表(I)。删除是错误的。注意下面的第一步。创建新工作簿时,要拆分的数据工作表的名称是“数据源”,而不是sheet1。手动将其更改为“数据源”。
操作步骤:
原始数据表如下(名称为:data source),需要根据b列的人名拆分成每个人一张工作表。
点击[开发工具]-[Visual Basic]或快捷键Alt F11进入VBE编辑界面。
插入新模块。
将以下代码粘贴到模块中:
将内容复制到剪贴板
Sub CFGZB()
Dim myRange作为变体
迪姆缅甸
Dim titleRange作为范围
将标题隐藏为字符串
Dim columnNum为整数
My range=application.inputbox(提示:='请选择标题行:'类型:=8)
myArray=工作表函数。转置(myRange)
Set range=application.inputbox(提示:='请选择拆分表头,必须是第一行和一个单元格,如“name”,Type:=8)
title=标题范围。价值
columnNum=titleRange。圆柱
申请。ScreenUpdating=False
申请。显示警报=假
Dim i,Myr,Arr,num
Dim d,k
For i=Sheets。数到1第一步
如果床单(一)。然后命名为“数据源”
床单(一)。删除
如果…就会结束
接下来我
Set d=CreateObject('脚本。字典’)
Myr=工作表(“数据源”)。使用范围。行数。计数
Arr=工作表('数据源')。范围(单元格(2,columnnam),单元格(Myr,columnnam))
对于i=1至下界(Arr)
d(Arr(i,1))=' '
然后
k=d键
对于i=0至UBound(k)
set conn=CreateObject(' adodb . connection ')
' conn . Open ' provider=Microsoft . jet . oledb . 4.0;扩展属性=excel 8.0数据源=' ThisWorkbook。全名
SQL=' select * from[data source $]where ' title '=' k(I)' ' '
工作表。添加在:=张(张。计数)
带活动表。名称=k(i)
对于num=1到UBound(myArray)。单元格(1,num)=myArray(num,1)
下一个数字。范围(' A2 ')。CopyFromRecordset连接执行(Sql)
以…结尾
床单(1)。挑选
工作表(1).单元格. Select
选择。复制
工作表(工作表。数数)。使活动
ActiveSheet。单元格。选择
选择。粘贴特殊粘贴:=xlPasteFormats,操作:=xlNone,_
SkipBlanks:=False,Transpose:=False
申请。CutCopyMode=False
接下来我
关闭控制室
设置连接=无
申请。显示警报=真
申请。ScreenUpdating=True
末端接头
5.插入一个控制按钮,并为刚刚插入的模块代码分配一个宏。
6.单击插入的按钮控件,根据提示选择要拆分的标题行和标题列字段。本例中选择名称字段进行拆分,当然也可以选择C列的名称进行拆分,具体视实际需求而定。
7.代码运行后,工作簿的后面会出现很多工作表,每个工作表都是单个人的数据。特殊的
8.注意:
1)原始数据表应该有第一行的数据,不能有合并单元格。
2)打开工作簿时,需要打开宏,否则无法运行代码。
以上是excel根据条件将一个工作表拆分成多个工作表的图解教程。希望能对大家有所帮助!