excel VBA分割数据行生产多个表格
Posted 多情却被无情恼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel VBA分割数据行生产多个表格相关的知识,希望对你有一定的参考价值。
WPS只有付费和特殊版本才能使用VBA。
excel要先打开vba功能:
打开开发工具面板(默认是没有开发工具选项卡的)
【文件】->【选项】->【自定义功能区】
进入vba编辑
方式一、【右键Sheet1 】->【查看代码】
方式二、【开发者工具】->【Visual Basic】
粘贴代码:
Sub IMonday() Dim r, c, i, WJhangshu, WJshu, bt As Long r = Range("A" & Rows.Count).End(xlUp).Row b = InputBox("请输入分表行数") If IsNumeric(b) Then WJhangshu = Int(b) Else MsgBox "输入错误", vbOKOnly, "错误" End End If c = Cells(1, Columns.Count).End(xlToLeft).Column bt = 1 \'标题行数 \'WJhangshu = 50 \'每个文件的行数 WJshu = IIf(r - bt Mod WJhangshu, Int((r - bt) / WJhangshu), Int((r - bt) / WJhangshu) + 1) \'------ Set fs = CreateObject("Scripting.FileSystemObject") \' For i = 0 To WJshu Workbooks.Add Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\\" & Format(i + 1, String(Len(WJshu), 0)) & "." & fs.GetExtensionname(ThisWorkbook.FullName) \'扩展名 Application.DisplayAlerts = True ThisWorkbook.ActiveSheet.Range("A1").Resize(bt, c).Copy ActiveSheet.Range("A1") ThisWorkbook.ActiveSheet.Range("A" & bt + i * WJhangshu + 1).Resize(WJhangshu, c).Copy _ ActiveSheet.Range("A" & bt + 1) ActiveWorkbook.Close True Next End Sub
bt = 1表示第1至bt行是标题行,这样,分割的每张表都会带标题行,如果你的标题行占两行,将其改为2即可,表示前两行是标题行。
以上是关于excel VBA分割数据行生产多个表格的主要内容,如果未能解决你的问题,请参考以下文章
在EXCEL中用VBA操作WORD表格:怎样选择一个表格中除第一行以外的任意连续行(比如第2到4行)?
vba程序从excel表格读取数据(数据量=2000行),程序运行时特别慢,怎么解决?