excel将一个工作表根据条件拆分成多个工作表图文教程

所属分类: 软件教程 / 办公软件 阅读数: 2043
收藏 0 赞 0 分享

本例介绍在excel中如何将一个工作表根据条件拆分成多个工作表。

注意:很多朋友反映sheets(i).delete这句代码出错,要注意下面第一个步骤,要拆分的数据工作表名称为“数据源”,而不是你新建工作簿时的sheet1这种。手动改成“数据源”即可。

操作步骤:

原始数据表如下(名称为:数据源),需要根据B列人员姓名拆分成每个人一个工作表。

点击【开发工具】-【Visual Basic】或者Alt+F11的快捷键进入VBE编辑界面。

如下图所示插入一个新的模块。

如下图,粘贴下列代码在模块中:

复制内容到剪贴板
  1. Sub CFGZB()   
  2.   
  3.     Dim myRange As Variant   
  4.   
  5.     Dim myArray   
  6.   
  7.     Dim titleRange As Range   
  8.   
  9.     Dim title As String   
  10.   
  11.     Dim columnNum As Integer   
  12.   
  13.     myRange = Application.InputBox(prompt:="请选择标题行:", Type:=8)   
  14.   
  15.     myArray = WorksheetFunction.Transpose(myRange)   
  16.   
  17.     Set titleRange = Application.InputBox(prompt:="请选择拆分的表头,必须是第一行,且为一个单元格,如:“姓名”", Type:=8)   
  18.   
  19.     title = titleRange.Value   
  20.   
  21.     columnNum = titleRange.Column   
  22.   
  23.     Application.ScreenUpdating = False   
  24.   
  25.     Application.DisplayAlerts = False   
  26.   
  27.     Dim i&, Myr&, Arr, num&   
  28.   
  29.     Dim d, k   
  30.   
  31.     For i = Sheets.Count To 1 Step -1   
  32.   
  33.         If Sheets(i).Name <> "数据源" Then   
  34.   
  35.             Sheets(i).Delete   
  36.   
  37.         End If   
  38.   
  39.     Next i   
  40.   
  41.     Set d = CreateObject("Scripting.Dictionary")   
  42.   
  43.     Myr = Worksheets("数据源").UsedRange.Rows.Count   
  44.   
  45.     Arr = Worksheets("数据源").Range(Cells(2, columnNum), Cells(Myr, columnNum))   
  46.   
  47.     For i = 1 To UBound(Arr)   
  48.   
  49.         d(Arr(i, 1)) = ""  
  50.   
  51.     Next   
  52.   
  53.     k = d.keys   
  54.   
  55.     For i = 0 To UBound(k)   
  56.   
  57.         Set conn = CreateObject("adodb.connection")   
  58.   
  59.         conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName   
  60.   
  61.         Sql = "select * from [数据源$] where " & title & " = '" & k(i) & "'"  
  62.   
  63.         Worksheets.Add after:=Sheets(Sheets.Count)   
  64.   
  65.         With ActiveSheet   
  66.   
  67.             .Name = k(i)   
  68.   
  69.             For num = 1 To UBound(myArray)   
  70.   
  71.                 .Cells(1, num) = myArray(num, 1)   
  72.   
  73.             Next num   
  74.   
  75.             .Range("A2").CopyFromRecordset conn.Execute(Sql)   
  76.   
  77.         End With   
  78.   
  79.         Sheets(1).Select   
  80.   
  81.         Sheets(1).Cells.Select   
  82.   
  83.         Selection.Copy   
  84.   
  85.         Worksheets(Sheets.Count).Activate   
  86.   
  87.         ActiveSheet.Cells.Select   
  88.   
  89.         Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _   
  90.   
  91.                                SkipBlanks:=False, Transpose:=False   
  92.   
  93.         Application.CutCopyMode = False   
  94.   
  95.     Next i   
  96.   
  97.     conn.Close   
  98.   
  99.     Set conn = Nothing   
  100.   
  101.     Application.DisplayAlerts = True   
  102.   
  103.     Application.ScreenUpdating = True   
  104.   
  105. End Sub   
  106.   

5、如下图所示,插入一个控件按钮,并指定宏到刚才插入的模块代码。

6、点击插入的按钮控件,根据提示选择标题行和要拆分的列字段,本例选择“姓名”字段拆分,当然也可以选择C列的“名称”进行拆分,看实际需求。

7、代码运行完毕后在工作簿后面会出现很多工作表,每个工作表都是单独一个人的数据。具体如下图所示:

8、注意:

1)原始数据表要从第一行开始有数据,并且不能有合并单元格;

2)打开工作簿时需要开启宏,否则将无法运行代码。

以上就是excel将一个工作表根据条件拆分成多个工作表图文教程,希望能对大家有所帮助!

更多精彩内容其他人还在看

如何在word文档中将页眉上横线删除

如何在word文档中将页眉上横线删除?很多朋友都不是很清楚,其实方法很简单的,下面小编就为大家介绍一下,一起来看看吧
收藏 0 赞 0 分享

使用捷速PDF编辑器修改pdf文档教程

要想修改pdf文档,但是不知道怎么修改,首先用户需要在电脑上下载安装捷速PDF编辑器,安装的过程非常简,之后按照下文操作即可
收藏 0 赞 0 分享

六亿宝贝反黄软件如何卸载(传统方法不行)

如何卸载,是安装了六亿宝贝反黄软件的用户最爱搜索的问题,传统的卸载方法不管用呀,还好想到了这个方法,下面以图文的形式为大家详细介绍下
收藏 0 赞 0 分享

Word2003版本保存怎么用?

Word版本保存怎么用?他可以打开其他协同者所保存的版本来查看该协同者完成对文档编辑之后的状态,还可根据各版本保存时间的先后来依次打开各版本,从而比对某一协同者编辑文旦前、后的状态变化
收藏 0 赞 0 分享

word字体显示一半怎么办?

word字体显示一半怎么办?现在大家都是无纸办公化,尤其使用word、excell比较多,但是我们在使用过程中总是碰到一些问题,比方我们在打字的时候,总是出现显示一半的情况,下面分享解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

PDF文件怎么提取页面到另一个PDF文件中?

PDF文件怎么提取页面到另一个PDF文件中?很多学习资料都是PDF格式的,有时自己证件扫描也会存进PDF文件,但是其中某些页的内容自己想分离出来,存进一个新的PDF中 ,网上方法还要下软件,下面分享一个简单的技巧,感兴趣的可以进来参考一下
收藏 0 赞 0 分享

ppt怎么设置动画窗格声音视频?

ppt怎么设置动画窗格声音视频?office ppt 的动画功能很轻大,尤其是配合视频,和音频后。下面以 office 2010为例告诉这些简单的操作如何设置。如何防止,需要的朋友可以参考下
收藏 0 赞 0 分享

word怎么设置才能尽可能的减少打印页面?

word怎么设置才能尽可能的减少打印页数?要打印的word文档有很多页,即使双面打印也要浪费很多纸张,该怎办呢?下面分享一种设置方法可以减少word打印页面,感兴趣的可以进来参考一下
收藏 0 赞 0 分享

ppt文档设置成单击时却还会自动启动的解决办法

ppt为何设置成单击时却还会自动启动?office办公软件虽然看来简单,但是功能太细太复杂了。比如说PPT里动画窗格明明设置成了“单击时”启动,然而播放的时候却变成自动的了,下面分享解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

WPS 无法启动无法启动打印作业该怎么解决?

WPS 无法启动无法启动打印作业该怎么解决?在局域网内连接打印机启动打印作业时会出现一些小状况,例如偶尔会出现“WPS office 无法启动打印作业……”的问题,下面分享解决办法
收藏 0 赞 0 分享
查看更多