Excel·VBA按行拆分工作表

news/2024/10/17 18:16:34/

对应之前文章《Excel·VBA按列拆分工作表》,对Excel表格数据按照固定行数,将工作表拆分

工作表按行拆分为工作表

Sub 工作表按行拆分为工作表()'当前工作表(worksheet)按固定行数拆分为多个工作表,保存在当前工作簿(workbook)tm = Now()Set ws = Application.ActiveSheet  '当前工作表即为待拆分工作表
'--------------------参数填写:num_row,数字;title_row表头行数,数字,第1行为1向下递增title_row = 1  '表头行数,每个拆分后的sheet都保留num_row = 100  '拆分数据行数,按多少行数据进行拆分,不能完全拆分的,多余行数单独max_row = ActiveSheet.UsedRange.Rows.count'拆分sheet数量,向上取整sheet_count = WorksheetFunction.RoundUp((max_row - title_row) / num_row, 0)For i = 1 To sheet_count:Worksheets.Add(after:=Sheets(Sheets.count)).Name = "拆分表" & i  '最后添加新sheet,并命名With ActiveSheetws.Rows(1 & ":" & title_row).Copy  '本行复制表头,下行复制数据.Range("A1").PasteSpecial Paste:=xlPasteAll.Range("A1").PasteSpecial Paste:=xlPasteColumnWidthsws.Rows(num_row * (i - 1) + title_row + 1 & ":" & (num_row * i) + title_row).Copy .Range("A" & title_row + 1)End With'Exit For  '强制退出for循环,单次测试使用NextDebug.Print ("拆分完成,累计用时" & Format(Now() - tm, "hh:mm:ss"))  '耗时
End Sub

工作表按行拆分为工作薄

Sub 工作表按行拆分为工作薄()'当前工作表(worksheet)按固定行数拆分保存为多个工作簿(workbook),文件单独保存tm = Now()Application.Visible = False  '后台运行,不显示界面Application.DisplayAlerts = False  '不显示警告信息Set fso = CreateObject("Scripting.FileSystemObject")
'--------------------参数填写:num_row,数字;title_row表头行数,数字,第1行为1向下递增title_row = 1  '表头行数,每个拆分后的sheet都保留num_row = 100  '拆分数据行数,按多少行数据进行拆分,不能完全拆分的,多余行数单独Set ws = Application.ActiveSheet  '当前工作表即为待拆分工作表wb_path = Application.ActiveWorkbook.Path  '当前工作簿文件路径wb_name = Application.ActiveWorkbook.Name  '当前工作簿文件名和扩展名save_path = wb_path + "\拆分表"  '保存拆分后的表格保存路径max_row = ActiveSheet.UsedRange.Rows.count'拆分sheet数量,向上取整sheet_count = WorksheetFunction.RoundUp((max_row - title_row) / num_row, 0)If fso.FolderExists(save_path) ThenDebug.Print ("拆分文件保存路径已存在:" & save_path)Elsefso.CreateFolder (save_path)Debug.Print ("拆分文件保存路径已创建:" & save_path)End IfFor i = 1 To sheet_count:Workbooks.AddWith ActiveSheetws.Rows(1 & ":" & title_row).Copy  '本行复制表头,下行复制数据.Range("A1").PasteSpecial Paste:=xlPasteAll.Range("A1").PasteSpecial Paste:=xlPasteColumnWidthsws.Rows(num_row * (i - 1) + title_row + 1 & ":" & (num_row * i) + title_row).Copy .Range("A" & title_row + 1)End With'保存文件全名(文件路径、文件名、扩展名)save_file = save_path & "\" & fso.GetBaseName(wb_name) & "_拆分表" & i & "." & fso.GetExtensionName(wb_name)ActiveWorkbook.SaveAs filename:=save_fileActiveWorkbook.Close (False)'Exit For  '强制退出for循环,单次测试使用NextSet fso = Nothing  '释放内存Application.Visible = TrueApplication.DisplayAlerts = TrueDebug.Print ("工作表已拆分完成,累计用时" & Format(Now() - tm, "hh:mm:ss"))  '耗时End Sub

举例

原始数据
在这里插入图片描述
参数:表头行数title_row = 1、按每5行拆分num_row = 5
拆分为工作表
在这里插入图片描述
在这里插入图片描述
拆分为工作薄
在这里插入图片描述


http://www.ppmy.cn/news/790937.html

相关文章

Excel怎么在数据中间隔插入指定行

今天跟大家分享一下Excel怎么在数据中间隔插入指定行 1.如下图我们想要在表格每行数据之间插入表头标题。 2.首先我们选中表格区域 3.点击下图选项(Excel工具箱,百度即可了解详细下载安装信息,本文这里就不做详细解说。) 4.选择【…

java excel 读取一行_一行代码完成 Java的 Excel 读写--easyexcel

最近我在 Github 上查找一个可以快速开发 excel 导入导出工具,偶然发现由阿里开发 easyexcel 开源项目,尝试使用后感觉这款工具挺不错的,下面分享一下我的 easyexcel 案例使用。 1、easyexcel 简介 一般在项目可能会涉及到 Excel 导入和导出&…

excel一列数据中每个数重复固定次数

问题描述:把一些数据每个重复指定次数,比如我想把内容这一列每一个都重复这么多次数 解决方法:采用excel中的Power Query方法,具体方法是数据-自表格区域,在数据来源处选择想要处理的数据,在上载以后会出现…

Excel表中只能选择固定内容

一、实现效果 二、实现方法 2.0、通用操作 ①选中需要操作的列; ②选中顶部的导航栏【数据】; ③找到【数据工具】; ④点击【数据验证】; 2.1、设置Excel表中只能选择指定内容 ①选中【设置】; ②选择【序列】&…

excel按照固定行数拆分多个

1 背景&#xff1a; 工作需要&#xff0c;需要把Excel按照固定行数拆分。 解决办法&#xff1a; 1. 生成是提前处理&#xff1a; 简单来说就是按照行数生成多个Excel。 大概逻辑如下&#xff1a; if&#xff08;list.size< limit&#xff09; { 直接生成Excel return&…

Python 读取整个excel数据,指定行数据和指定列数据解决方法

import xlrdclass operateExcel(object):def __init__(self, filepath"../user_list_命名格式.xls", sheet_name"users"):self.filepath filepath # excel所在路径self.sheet_name sheet_name # excel中sheet页的名字self.data xlrd.open_workbook(self…

python提取Excel多个sheet中固定单元格数据

有个Excel&#xff0c;里面有多个sheet&#xff0c;现在需要把每个sheet中固定单元格的数据提取出来 例如我的这个表格&#xff0c;每个月都有一个这样的表格&#xff0c;然后一共12个sheet存放了12个月的数据&#xff0c;现在我把每个sheet的C5单元格数据提取出来 首先&#x…

python删除excel某行的格式_Python+Xlwings 删除Excel的行和列

这篇文章主要介绍了Python+Xlwings 删除Excel的行和列的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一、需求: 某公司管理的多个资管计划每天生成A表,业务人员需手工打开每个A表,将某些行、列删除后方可打印上报。 现拟采用程序代替手工操作。 二、分析…