Excel VBA 7.51玩转工作表的拆分,按照指定行数拆分成为独立的工作表

一起学习,一起进步~~

前景提要()

今天我们来继续玩转工作表的拆分,昨天我们分享了关于工作表的拆分中的一个操作,按照指定的行数将总表的数据拆分成为多个工作表的格式,但是有小伙伴觉得这样还不够满足他们的需求,他们希望能够时间将工作表生成独立的工作薄,这样和总表数据之间没有任何的联系,可以随意的分发给需要这些数据的人,这样他们操作更加的灵活,所以今天我们就来实现这个功能

场景说明

好了,场景不用说了,我们今天还是利用昨天的场景。而且昨天有小伙伴们表示昨天我们数据的个数刚刚好是19个数据,所以每个工作表的格式正好相同,如果碰到数据有多余的情况会怎么办呢?今天我们一起来实践下这个场景

代码区

Sub chai()Dim rng As Range, sth As Worksheet, BookN As Workbook, pathn$pathn = ActiveWorkbook.PathSet sth = ActiveSheetSet rng = Application.InputBox("请选择表头区域", "表头区域的确定", , , , , , 8)TitleR = rng.Rows.CountTitleC = rng.ColumnTitleColNum = rng.Columns.Countnum = InputBox("请输入间隔拆分的行数")l = ActiveSheet.Cells(Rows.Count, TitleR).End(xlUp).RowCountR = l - TitleRFor i = TitleR + 1 To l Step num k = k + 1 Workbooks.Add Set BookN = ActiveWorkbook rng.Copy BookN.Worksheets(1).Cells(1, 1) sth.Activate Range(Cells(i, TitleC), Cells(i + num - 1, TitleColNum)).Copy BookN.Worksheets(1).Cells(TitleR + 1, 1) BookN.SaveAs pathn & "\" & "第" & k & "次拆分" BookN.Close FalseNext iEnd Sub

好了,来看看代码,103个数据按照20个拆分,应该生成6个工作表,我们来验证下

首先依然是需要选择表头的范围

然后输入指定的拆分行数,这里我们输入20

看看结果生成了多少个新的独立工作薄

6个,达到了我们的要求,我们直接看看最后一个工作薄里面有多少个数据

20*5+3=103,正好数据完整了。

代码分析

其实本节的代码和上节的代码几乎差不多,甚至可以说是非常的相似,不过我们更改了其中的部分代码而已,我们这里还是来详细说下

pathn = ActiveWorkbook.Path

这段代码大家一定又陌生又熟悉吧,在我们需要获取文件的位置的时候,我们就需要使用这个path功能,他主要是帮忙我们获取当前文件夹的位置的

Set rng = Application.InputBox("请选择表头区域", "表头区域的确定", , , , , , 8)TitleR = rng.Rows.CountTitleC = rng.ColumnTitleColNum = rng.Columns.Count

然后就是获得表头区域的代码了

Set rng = Application.InputBox("请选择表头区域", "表头区域的确定", , , , , , 8)TitleR = rng.Rows.CountTitleC = rng.ColumnTitleColNum = rng.Columns.Count

这里还是利用了单元格的相关属性,来获得表头的总行数,起始列,以及总列数

然后我们就开始循环我们的工作表了,按照什么样的形式来循环呢?既然我们是按照指定的行数来拆分,而我们循环的方式也是按照行数一行行的循环,所以我们这里直接选择跳跃式循环,按照指定的行数来循环,一次20行的跃进

既然是生成独立的工作薄,我们自然要新建工作薄了。这个代码就很简单了,在之前我们学习工作薄的时候,已经分享过很多次了

Workbooks.AddSet BookN = ActiveWorkbookrng.Copy BookN.Worksheets(1).Cells(1, 1)

生成工作薄的同时,将标题栏的数据全部复制到新的工作薄中,这样就有了表头了。

有了表头自然要填充内容了,这里的内容我们就需要掌握一定的规律了,怎么样的规律呢?上节我们已经说了,这里我们将无关数据删掉,这样表达更清晰一点

然后有了起始的两个圈中的单元格的位置之后,我们就可以利用range将这两个单元格之间的区域合在一起,进行复制粘贴到另外一个工作薄中了。

然后工作薄中有了数据,那肯定要保存起来了

BookN.SaveAs pathn & "\" & "第" & k & "次拆分" BookN.Close False

工作薄另存之后关闭工作薄,一个工作薄就完成了,依次类推进行其他的工作薄的操作。

======================================

本节课的案例源码已经上传,需要的小伙伴后台私信“7-50-T3”,希望大家多支持~~,多多关注 ~ ~

好了,明晚21:00,准时再见!


因为公众号没有留言功能(开的比较晚),所以建立一个线下微信群,主要为大家提供一个交流的平台,同时大家也可以提一些对公众号的意见和看法,大家一起学习,一起进步。


(0)

相关推荐