操作步骤:原始数据表如下(名称为:数据源),需要根据B列人员姓名拆分成每个人一个工作表。点击【开发工具】-【Visual Basic】或者Alt+F11的快捷键进入VBE编辑界面。如下图所示插入一个新的模块e799bee5baa6e59b9ee7ad9431333365653266。如下图,粘贴下列代码在模块中:Sub CFGZB()Dim myRange As VariantDim myArrayDim titleRange As RangeDim title As StringDim columnNum As IntegermyRange = Application.InputBox(prompt:="请选择标题行:", Type:=8)myArray = WorksheetFunction.Transpose(myRange)Set titleRange = Application.InputBox(prompt:="请选择拆分的表头,必须是第一行,且为一个单元格,如:“姓名”", Type:=8)title = titleRange.ValuecolumnNum = titleRange.ColumnApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalseDim i&, Myr&, Arr, num&Dim d, kFor i = Sheets.Count To 1 Step -1If Sheets(i).Name <> "数据源" ThenSheets(i).DeleteEnd IfNext iSet d = CreateObject("Scripting.Dictionary")Myr = Worksheets("数据源").UsedRange.Rows.CountArr = Worksheets("数据源").Range(Cells(2, columnNum), Cells(Myr, columnNum))For i = 1 To UBound(Arr)d(Arr(i, 1)) = ""Nextk = d.keysFor i = 0 To UBound(k)Set conn = CreateObject("adodb.connection")conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullNameSql = "select * from [数据源$] where " & title & " = '" & k(i) & "'"Worksheets.Add after:=Sheets(Sheets.Count)With ActiveSheet.Name = k(i)For num = 1 To UBound(myArray).Cells(1, num) = myArray(num, 1)Next num.Range("A2").CopyFromRecordset conn.Execute(Sql)End WithSheets(1).SelectSheets(1).Cells.SelectSelection.CopyWorksheets(Sheets.Count).ActivateActiveSheet.Cells.SelectSelection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _SkipBlanks:=False, Transpose:=FalseApplication.CutCopyMode = FalseNext iconn.CloseSet conn = NothingApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueEnd Sub如下图所示,插入一个控件按钮,并指定宏到刚才插入的模块代码。点击插入的按钮控件,根据提示选择标题行和要拆分的列字段,本例选择“姓名”字段拆分,当然也可以选择C列的“名称”进行拆分,看实际需求。代码运行完毕后在工作簿后面会出现很多工作表,每个工作表都是单独一个人的数据。具体如下图所示:注意:1)原始数据表要从第一行开始有数据,并且不能有合并单元格;2)打开工作簿时需要开启宏,否则将无法运行代码www.51dongshi.com防采集。
在excel中,经常会用到将一个工作表根据条件拆分成多个工作表,那你是否知道如何操作呢?下面就来分享一下其操作步骤。
材料/工具
excel,电脑
你这个可以用查询的方法。在同一个工作簿上建立多个以地区为名的表。假设原表名为“明细”,新建了一个名为
方法
首先,打开要操作的excel表,如图所示。
For i = 0 To UBound(k) - 1这行改成for i=Lbound(k)
然后,点击界面上方的“开发工具”,再点击下方的“VB编辑器”,如图所示。
一个Excel工作簿中的多个工作表想拆分成独立表格,首先打开表格找到并选中表格右下角的表一,然后,点
然后,点击界面上方的“插入”选项卡,再在弹出的框中点击“模块”,如图所示。
Excel是职场办公人员很常见的一种数据处理工具。excel应用广泛。Excel表格制作、Excel
然后,复制粘贴下列代码在模块中,如图所示。
操作步骤:原始数据表如下(名称为:数据源),需要根据B列人员姓名拆分成每个人一个工作表。点
Sub CFGZB()
以WPS 2019版本为例:关于一个EXCEL如何将一个工作表根据条件拆分成多件工作表,您可使用W
Dim myRange As Variant
excel将一个工作表根据条件拆分成多个工作表方法详见:https://jingyan.baidu.
Dim myArray
以WPS 2019版本为例:关于EXCEL如何将1个工作表按条件分割成多个工作表,您可使用WPS参
Dim titleRange As Range
以WPS 2019版本为例:关于Excel把一个工作表拆分成多个工作表,您可使用WPS参考下述步骤
Dim title As String
你这个可以用查询的方法。在同一个工作簿上建立多个以地区为名的表。假设原表名为“明细”,新建了一个名为
Dim columnNum As Integer
For i = 0 To UBound(k) - 1这行改成for i=Lbound(k)
myRange = Application.InputBox(prompt:="请选择标题行:", Type:=8)
一个Excel工作簿中的多个工作表想拆分成独立表格,首先打开表格找到并选中表格右下角的表一,然后,点
myArray = WorksheetFunction.Transpose(myRange)
Set titleRange = Application.InputBox(prompt:="请选择拆分的表头,必须是第一行,且为一个单元格,如:“姓名”", Type:=8)
title = titleRange.Value
columnNum = titleRange.Column
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim i&, Myr&, Arr, num&
Dim d, k
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name <> "成绩单" Then
Sheets(i).Delete
End If
Next i
Set d = CreateObject("Scripting.Dictionary")
Myr = Worksheets("成绩单").UsedRange.Rows.Count
Arr = Worksheets("成绩单").Range(Cells(2, columnNum), Cells(Myr, columnNum))
For i = 1 To UBound(Arr)
d(Arr(i, 1)) = ""
Next
k = d.keys
For i = 0 To UBound(k)
Set conn = CreateObject("adodb.connection")
conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
Sql = "select * from [成绩单$] where " & title & " = '" & k(i) & "'"
Dim Nowbook As Workbook
Set Nowbook = Workbooks.Add
With Nowbook
With .Sheets(1)
.Name = k(i)
For num = 1 To UBound(myArray)
.Cells(1, num) = myArray(num, 1)
Next num
.Range("A2").CopyFromRecordset conn.Execute(Sql)
End With
End With
ThisWorkbook.Activate
Sheets(1).Cells.Select
Selection.Copy
Workbooks(Nowbook.Name).Activate
ActiveSheet.Cells.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Nowbook.SaveAs ThisWorkbook.Path & "" & k(i)
Nowbook.Close True
Set Nowbook = Nothing
Next i
conn.Close
Set conn = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
然后,按组合键“CTRAL+F”,点击替换,查找内容为“成绩单”,替换为文件sheet表的命名。
然后,点击界面上方的“运行”,再点击“运行子过程/用户窗体”。
然后,在弹出的窗口里选择,条件所在位置,再点击“确定”,如图所示。
然后,在弹出的对话框中,点选筛选条件,如图所示,再点击“确定”,如图所示。
这样,就将一个工作表根据条件拆分成多个工作表了。
以WPS 2019版本copy为例:关于一个EXCEL如何将一个工作表根据条件拆分成多件工作表,百您可使用WPS参考下述步骤完成操作:1、打开「表格度(Excel)」文档;2、点击「数据-拆分表格」;3、按需选择「把工作表按知照内容拆分」或「把工作簿按照工作表拆分」使用即道可,生成表格是简单的,问题是你的日期,必须要是规zhidao范的日期格式(你可在空白单元格输入公式:=TODAY(),显示的就是规范的日期格式版),否则真难操作啊!操作上只要用一个数组公式即可,但是数据量大权的话运算和计算反应会比较慢的更多追问追答追问那请问是什么公式呢??追答新建一个工作表,在第一行输入相应的表格头,然后在A2单元格输入数组公式:=IFERROR(INDEX('18年销售记录总表'!A2:A42,SMALL(IF(MONTH('18年销售记录总表'!$A$2:$A$42)=1,ROW($2:$42),4^8),ROW(A1)))&"","")复制并下拉,再向右拉,即可得到1月份的数据表,把上面公式中的等于1改成等于2即为2月份的表此公式为数组公式,粘贴或者输入完毕必须是CTRL+SHIFT+ENTER这3键同时按结束,否则公式无效!!!同时,公式里的数字42要改为总表中最后一行数据所在行的行号,此处总表以第2行开始有数据。新生成表格中的日期列必须要设置成日期格式,否则显示仅为数值……追问不知道什么原因改了日期格式还是显示的数字呢追答把日期这一列的公式改成为:=IFERROR(INDEX('18年销售记录总表'!A2:A42,SMALL(IF(MONTH('18年销售记录总表'!$A$2:$A$42)=1,ROW($2:$42),4^8),ROW(A1))),"")追问好像还是有问题,出来的数据比原始数据少了的追答1、那个ROW改成:ROW($1:$9858)2、第一个要改成A$2:A$9859,因为没有绝对定位,本回答被提问者和网友采纳,excel将一个工百作表根度据条件拆知分成多道个工作内表方法详见:容https://jingyan.baidu.com/article/c45ad29cd48857051753e285.html,这个别人要理解得先知道你拆分的条件是什么,vba代码?内容来自www.51dongshi.com请勿采集。
声明:本文由用户 yg123 上传分享,本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com