之前,有网友曾将多个Excel工作簿中的工作表作为一个工作簿发布,有人问我如何将一个Excel工作簿中的工作表分为多个工作表。实际上实现的方法有很多。如果数据较少,可以直接使用Excel过滤器,复制和粘贴。如果您有大量数据或执行日常任务。
我们这讲就来使用VBA的方法来实现,这个方法很简单,只需要复制代码(代码也是小编从网上找的,然后修改了下,这样通用性就更强了,更多精彩请关注公众号:word_excel_ppt),运行就可以了。
1、素材文件
素材文件
我们的素材文件是以某公司为例,数据记录了公司旗下有7家店铺,从2016年1月1日到2018年12月31日,每天销售的流水数据。
存放数据的工作表名称已修改为“数据源”,工作表的第一行为标题行,一共有2195行数据。
现在我们想按照店铺名称,将整个工作表拆分开。
2、操作步骤
打开我们的工作表文件以后,将需要拆分的工作表名字修改成“数据源”。然后按键盘上面的Alt+F11,弹出VBA编辑的窗口,将代码粘贴进代码编辑器中(代码见最后附件);
代码窗口
重要的事情重复一次,因为我们代码里面,要拆分的工作表名称叫"数据源",所以你直接把你要拆分的工作表名称修改成“数据源”才能正常运行。
3、运行程序
在VBA编辑器中,点击示例中的绿色三角(见上图),或者是按键盘上面的F5都可以。
选择标题行
此时会让我们选择标题行,我们通过鼠标点击标记标题行(第1行)就可以了;
选择拆分字段
接下来会让我们选择,需要按照哪个字段拆分,我们就选择门店名称(B1)单元格,然后直接点确定。
搞定
这个时候程序就会自动运行,鼠标会闪动,我们需要等一下,运行的时间就和你电脑的配置以及要拆分文件的大小有关,以我们的素材为例,大概需要10秒钟,就可以搞定,然后会弹出一个提示完成的消息框,我们点确定就可以。
运行结果
回到我们的文件里面,可以看到程序已经给我们拆分好了,是不是觉得很方便呢?
附程序代码(程序在Win7+Excel 2016 运行可行):
视频演示,稍后发布在头条专栏中
Sub 按照指定字段拆分工作表()
'本程序来源于网络,原作者不详,特留此句对原作者表示感谢;
'本程序中,云淡风轻微课堂(公众号:word_excel_ppt)进行了部分修改,适用性更广
Dim myRange As Variant
Dim myArray
Dim titleRange As Range
Dim title As String
Dim columnNum As Integer
myRange = A(prompt:="请用鼠标点击标题行:", Type:=8)
myArray = Work(myRange)
Set titleRange = A(prompt:="请用鼠标点击要拆分的字段,必须是第一行,且为1个单元格", Type:=8)
title =
columnNum =
A = False
A = False
Dim i&, Myr&, Arr, num&
Dim d, k
For i = S To 1 Step -1
If Sheets(i).Name <> "数据源" Then
Sheets(i).Delete
End If
Next i
Set d = CreateObject("Scri;)
Myr = Worksheets("数据源").U
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")
Select Case A * 1 '设置连接字符串,根据版本创建连接
Case Is <= 11
conn.Open "Provider=Micro;Extended Properties=excel 8.0;Data source=" & T
Case Is >= 12
conn.Open "Provider=Micro;Data Source=" & T & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
End Select
Sql = "select * from [数据源$] where " & title & " = '" & k(i) & "'"
Work after:=Sheets(S)
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 With
Sheets(1).Select
Sheets(1).Cells.Select
Selec
Worksheets(S).Activate
Ac
Selec Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
A = False
Next i
conn.Close
Set conn = Nothing
A = True
A = True
MsgBox " 已经拆分完成" & vbCrLf & vbCrLf & "更多内容敬请关注公众号:word_excel_ppt", vbInformation, "云淡风轻微课堂"
End Sub
更多精彩请关注公众号:word_excel_ppt
1.文章《ppt如何拆分单元格——PPT怎么拆分单元格》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《ppt如何拆分单元格——PPT怎么拆分单元格》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好