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

所属分类: 软件教程 / 办公软件 阅读数: 2021
收藏 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将一个工作表根据条件拆分成多个工作表图文教程,希望能对大家有所帮助!

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

Office软件选项前怎么输入一个勾选确认框?

Office软件选项前怎么输入一个勾选确认框?相信很多朋友都不是很清楚吧,下面小编就为大家介绍一下,一起来看看吧
收藏 0 赞 0 分享

Word和WPS通用的文档排版注意事项详解

从事文字方面的工作的朋友们经常会使用Word或WPS进行文字排版,用Word或WPS给文章排版很容易,然而,容易的事情背后往往隐藏着许多让人忽略不用的基本技能,本文主要为大家介绍Word和WPS通用的文档排版注意事项
收藏 0 赞 0 分享

快速有效的提升EXCEL启动速度的技巧

如何提升EXCEL的启动速度?Excel启动时会打开很多的加载文件,这个过程会极大的影响Excel的启动速度,下面我们来演示怎样禁止这些加载项从而提升软件的打开速度,需要的朋友可以参考下
收藏 0 赞 0 分享

怎么将pdf格式转换成excel文件 pdf文件转Excel格式方法图解

pdf怎么转换成excel表格?想要将pdf文件转换成excel就必须要借助一些软件来实现,那么,怎么将pdf格式转换成excel文件呢?针对此问题,本文就为大家介绍pdf文件转Excel格式的方法
收藏 0 赞 0 分享

wps怎么设置行距?wps行间距设置图文教程

为了使文章整体看起来更加美观,我们就需要调整行间距,今天小编就为大家带来wps行间距的设置教程。需要的朋友抓紧一起学习吧
收藏 0 赞 0 分享

Excel 2007的分段条图如何绘制?

Excel 2007的分段条图如何绘制?相信很多朋友都不是很清楚吧,下面小编就为大家介绍一下,不会的朋友可以跟着教程来学习下,希望能对大家有所帮助
收藏 0 赞 0 分享

Excel表格怎么做多汇总?

本次我们来为大家讲解一下在 Excel 表格中。通过实例的形式学习一个非常有趣的内容,即Excel表格汇总制作,希望能对大家有所帮助
收藏 0 赞 0 分享

Excel最近位置的历史记录怎样清除?

Excel最近位置的历史记录怎样清除?很多朋友都不是很清楚,下面小编就为大家介绍,希望能对大家有所帮助
收藏 0 赞 0 分享

Excel怎么制作一个能自动计算三角形边长的工作表

在日常生活中我们经常用到三角函数,可是在用Excel来解决三角函数的的时候,它默认的是弧度制。那么Excel怎么制作一个能自动计算三角形边长的工作表?下面就为大家介绍一下,来看看吧
收藏 0 赞 0 分享

Excel怎么设置打印页面边距

现在使用Word 和Excel 的人越来越多,但其中的使用方法和诀窍需要在实践中慢慢体会和总结,有时一项很简单、快捷的操作却能给办公人员带来工作效率极大的提升。下面小编就教大家Excel怎么设置打印页面边距,希望能对大家有所帮助
收藏 0 赞 0 分享
查看更多