博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分割excel sheet
阅读量:7062 次
发布时间:2019-06-28

本文共 3063 字,大约阅读时间需要 10 分钟。

Sub split_sheet()     '输入用户想要拆分的工作表     Dim sheet_name     sheet_name = Application.InputBox("请输入拆分工作表的名称:")     Worksheets(sheet_name).Select     '输入获取拆分需要的条件列     Dim col_name     col_name = Application.InputBox("请输入拆分依据的列号(如A):")     '输入拆分的开始行,要求输入的是数字     Dim start_row As Integer     start_row = Application.InputBox(prompt:="请输入拆分的开始行:", Type:=1)     '暂停屏幕更新     Application.ScreenUpdating = False     '工作表的总行数     Dim end_row     end_row = Worksheets(sheet_name).Range("A990000").End(xlUp).Row     '遍历计算所有拆分表,每个拆分表的格式为"表名称,表行数"     '对于二维数组,ReDim只能扩充最后一维,因此sheet_map行不变,扩充列     Dim sheet_map(), sheet_index     ReDim sheet_map(1, 0)     sheet_map(0, 0) = Range(col_name & start_row).Value     sheet_map(1, 0) = 1     sheet_index = 0     With Worksheets(sheet_name)         Dim row_count, temp, i         row_count = 0         For i = start_row + 1 To end_row             temp = Range(col_name & i).Value             If temp = Range(col_name & (i - 1)).Value Then                 sheet_map(1, sheet_index) = sheet_map(1, sheet_index) + 1             Else                 ReDim Preserve sheet_map(1, sheet_index + 1)                 sheet_index = sheet_index + 1                 sheet_map(0, sheet_index) = temp                 sheet_map(1, sheet_index) = 1             End If         Next     End With     '根据前面计算的拆分表,拆分成单个文件     Dim row_index     Dim name_hz As String     name_hz = "-20161220-M.xlsx"     row_index = start_row     For i = 0 To sheet_index         Workbooks.Add         '创建最终数据文件夹         Dim dir_name         dir_name = ThisWorkbook.Path & "\拆分出的表格\"         If Dir(dir_name, vbDirectory) = "" Then             MkDir (dir_name)         End If         '创建新工作簿         Dim workbook_path         workbook_path = ThisWorkbook.Path & "\拆分出的表格\" & sheet_map(0, i) & name_hz         ActiveWorkbook.SaveAs workbook_path         ActiveSheet.Name = sheet_map(0, i)         '激活当前工作簿,ThisWorkbook表示当前跑代码的工作簿         ThisWorkbook.Activate         '拷贝条目数据(即最前面不需要拆分的数据行)         Dim row_range         row_range = 1 & ":" & (start_row - 1)         Worksheets(sheet_name).Rows(row_range).Copy         Workbooks(sheet_map(0, i) & name_hz).Sheets(1).Range("A1").PasteSpecial         '拷贝拆分表的专属数据         row_range = row_index & ":" & (row_index + sheet_map(1, i) - 1)         Worksheets(sheet_name).Rows(row_range).Copy         Workbooks(sheet_map(0, i) & name_hz).Sheets(1).Range("A" & start_row).PasteSpecial         row_index = row_index + sheet_map(1, i)         '保存文件         Workbooks(sheet_map(0, i) & name_hz).Close SaveChanges:=True     Next     '进行屏幕更新     Application.ScreenUpdating = True     MsgBox "拆分工作表完成"   End Sub

将一个工作簿分割成多个工作簿并保存到相同文件夹中

Sub Splitbook()'Updateby20140612Dim xPath As StringxPath = Application.ActiveWorkbook.PathApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalseFor Each xWs In ThisWorkbook.Sheets    xWs.Copy    Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".xls"    Application.ActiveWorkbook.Close FalseNextApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueEnd Sub

转载地址:http://ikbll.baihongyu.com/

你可能感兴趣的文章
jQuery实现文本框回车键转tab键 分类: JavaScript ...
查看>>
内存程序文件、内存对齐程序
查看>>
wp7设置浏览器主页
查看>>
资源管理更新系统V2.0版的一些问题
查看>>
Sil“.NET研究”verlight与HTML双向交互
查看>>
More-iOS中的Ping
查看>>
React 重要的一次重构:认识异步渲染架构 Fiber
查看>>
TensorFlow笔记(2)——利用TensorFlow训练一个最简单的一元线性模型
查看>>
TensorFlow笔记(4)——优化手写数字识别模型之代价函数和拟合
查看>>
微服务java_b2b商城系统_java商城源码100%开源适合2次开发-(七)高可用的分布式配置中心(Spring Cloud Config)...
查看>>
Swift5.0新特性更新
查看>>
React Redux 中间件思想遇见 Web Worker 的灵感(附demo)
查看>>
超可爱的颜文字,我要放到代码里❛‿˂̵✧
查看>>
Laravel核心解读--观察者模式
查看>>
细数iOS上的那些安全防护
查看>>
H5打造属于自己的视频播放器(HTML篇)
查看>>
关于人工智能,你所需了解的基本知识
查看>>
2019,聊聊Web技术的发展
查看>>
centos7使用kubeadm配置高可用k8s集群的另一种方式
查看>>
深入探索 Kdump
查看>>