码迷,mamicode.com
首页 > 编程语言 > 详细

excel VBA分割数据行生产多个表格

时间:2020-04-06 17:54:36      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:filename   pre   alert   copy   粘贴   string   nbsp   分表   技术   

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分割数据行生产多个表格

标签:filename   pre   alert   copy   粘贴   string   nbsp   分表   技术   

原文地址:https://www.cnblogs.com/jiujian/p/12642662.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!