网站空间自己做,石家庄网站建设策略,wordpress全图水印插件,广州设计企业网站excel 表格 拆分 合并 拆分工作表按行拆分为工作表工作表按行拆分为工作薄 合并操作步骤 拆分
为了将Excel中的数万行数据拆分成多个个每个固定行数的独立工作表#xff0c;并且保留每个工作表的表头#xff0c;你可以使用以下VBA脚本。这个脚本会复制表头到每个新的工作表并且保留每个工作表的表头你可以使用以下VBA脚本。这个脚本会复制表头到每个新的工作表并将后续的数据行按固定行行的间隔进行拆分
工作表按行拆分为工作表
Sub 工作表按行拆分为工作表()当前工作表worksheet按固定行数拆分为多个工作表保存在当前工作簿workbooktm Now()Set ws Application.ActiveSheet 当前工作表即为待拆分工作表
--------------------参数填写num_row数字title_row表头行数数字第1行为1向下递增title_row 1 表头行数每个拆分后的sheet都保留num_row 20000 拆分数据行数按多少行数据进行拆分不能完全拆分的多余行数单独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 WithExit 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 20000 拆分数据行数按多少行数据进行拆分不能完全拆分的多余行数单独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合并
首先需要把多个需要合并excel表都放在同一个文件夹里面并在这个文件夹里面新建一个excel文件
Sub 合并当前目录下所有工作簿的全部工作表()Dim MyPath, MyName, AWbNameDim Wb As Workbook, WbN As StringDim G As LongDim Num As LongDim BOX As StringApplication.ScreenUpdating FalseMyPath ActiveWorkbook.PathMyName Dir(MyPath \ *.xls)AWbName ActiveWorkbook.NameNum 0Do While MyName If MyName AWbName ThenSet Wb Workbooks.Open(MyPath \ MyName)Num Num 1With Workbooks(1).ActiveSheet.Cells(.Range(B65536).End(xlUp).Row 2, 1) Left(MyName, Len(MyName) - 4)For G 1 To Sheets.CountWb.Sheets(G).UsedRange.Copy .Cells(.Range(B65536).End(xlUp).Row 1, 1)NextWbN WbN Chr(13) Wb.NameWb.Close FalseEnd WithEnd IfMyName DirLoopRange(B1).SelectApplication.ScreenUpdating TrueMsgBox 共合并了 Num 个工作薄下的全部工作表。如下 Chr(13) WbN, vbInformation, 提示End Sub操作步骤 打开Excel并按下Alt F11打开VBA编辑器。 在VBA编辑器中右键点击你的工作簿名称然后选择插入 - 模块以创建一个新的模块。 在新模块的代码窗口中复制并粘贴以下VBA代码 确保你的数据在Sheet1上或者将代码中的Sheet1替换为你的实际工作表名称。 运行这个VBA脚本你可以通过按F5键或者点击工具栏上的“运行”按钮 - 运行子/用户窗体。 分拆脚本将会创建一个或多个新工作表命名为Part 1、Part 2等并将数据从源工作表复制到这些新工作表中每个工作表包含2万行以2万行为例 可进行调整或最后一组可能少于2万行如果总行数不是2万的整数倍。 合并所有的合并到新的表格 按需粘入代码即可