分享

Excel VBA工作薄 7.7 工作表的拆分的前奏 按照某一列/行批量生成新工作表

 Excel和VBA 2021-03-31

前景提要(

上一节我们学习了通过工作表的指定单元格内容来更改工作表的名字,方法也并不是很难,简单的两句代码就可以实现了,不过批量生成工作表之后,再通过单元格内容来进行重命名似乎有点麻烦,为什么这样说呢?因为我们完全可以根据单元格的内容来批量生产工作表的,在批量生成工作表的过程中,顺带执行工作表的重命名,一举两大,完全不需要再次操作重命名的

场景模拟

假设我们当前有一个班级所有的同学的VBA和python的考试成绩

我们现在希望针对每个童鞋进行分析,将他们本次的考试成功和历次的考试成绩放在一起,形成一个对比,看看该童鞋最近学习的紧张情况

那么首先我们需要将这些同学每个人建立一个工作表,这样才可以方便分析

按照之前所需的,我们需要数一下当前一共有多少个童鞋,然后新建多少个工作表,然后再选择单元格区域,进行批量重命名,这个单元格区域还不能选错,选错了会报错的。非常的麻烦,而且至少需要两个小脚本,今天我们来介绍一个更快捷的,方便的方法。

代码区

Sub ssss()Dim rng As Range, arrSet rng = Application.InputBox("请选择单元格区域", "单元格区域的确定", , , , , , 8)arr = rngFor i = 1 To UBound(arr) + 1 Worksheets.Add after:=ActiveSheet ActiveSheet.Name = arr(i, 1)Next iEnd Sub

来看看效果,直接执行代码,首先选择单元格区域

然后执行新建,并重命名,看看效果

成功的一次性新增了所有的单元格对应的工作表

这样操作的好处,我们不需要数我们有多少个同学,需要增加多少个表,直接选择单元格就可以了

有多少个单元格,系统就会自动生成多少个新的工作表并进行重命名

代码分析

本次的代码也是非常的简单,甚至对于很多油VBA接触的小伙伴来说,这样的代码完全没有阅读压力,我就简单说下思路和方法

For i = 1 To UBound(arr) Worksheets.Add after:=ActiveSheet ActiveSheet.Name = arr(i, 1)Next i

和之前不同的是,我们不需要去数我现在需要增加几个,而是直接根据单元格内容来进行增加,你选择了几个就新增几个,将选择的单元格赋值给数组

通过数组的最大下标来确定最重要多少个工作表,并且循环,每生成一个工作表就用对应的数组的值,进行重命名

这样的操作更加的灵活和方便

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多