知方号

知方号

使用vba操作工作表,实现报表汇总

使用vba操作工作表,实现报表汇总

表有哪些方法和属性?

方法也可以理解为动作,表的方法有select,add, delete, copy,表的属性有count,name

假设工作簿中按顺序新建3张表叫1月和2月和3 月。如何切换到第2张表?

Sheet2.select //sheet2是表的默认名称。重命名只是给sheet2起一个别名

Sheets(2).select //sheets(2)指工作簿的第2张表

Sheets(“2月”).Select // Sheets(“2月”)指重命名为2月的表

如何知道工作簿中有多少张表?

Sheets.count //注意这里是一个值,并不能运行,如果想要查看结果可以复制到单元格中

像这样:sheet1.range(“a1”)=sheets.count在sheet1表的A1单元格中可查看表数量。

如何新建一个表?

Sheets.add after:=sheet1 //在第一张表后面新建一张表

Sheets.add before:=sheet1 //在第一张表前面新建一张表

Sheets.add after:=sheets(sheets.count) //在最后一个表后面新建一张表

案例1

题目:新建一个工作簿,在工作簿中插入12个新表,名称依次为1月到12月,结果如下图:

分析:

    新建12张表,需要执行12次,每次的操作一样,现在所有表后面新建一张表Sheets.add after:=sheets(sheets.count),然后给这个新建的表重命名需要用到name属性。,

代码:

Sub addsheet ()Dim i as integerFor i =1 to 12        Sheet1.add after:=sheets(sheets.count)        Sheets(sheets.count).Name = i & “月”NextEnd sub

如何删除一张表?

Sheet1.delete

但是会弹出确定删除吗对话框,我们需要先禁止弹出对话框再执行删除操作

Excel.application.displayalerts=false

Sheet1.delete

Excel.application.displayalerts=true//执行完要取消禁止

如何copy一张表?

Sheet1.copy //会新建一个工作簿,因为没有指定copy的位置

Sheet1.copy after:=sheets(sheets.count)

案例2

题目:将所有表(除了部门表)的名字按顺序填充到部门表的A列单元格中,结果如下图:

 

    代码:     

  Sub al2() Dim i as integer For i =2 to sheets.count      Sheets(“部门”).range(“a” & i-1)=sheets(i).Name NextEnd sub

案例3

题目:下面工作簿中有5月份的日报表,每个表内容一致,现在需要将每个表中的报表日期、审核人、总计(汇总表中称为金额)等信息汇总到汇总表中,如下图:

最终结果,点击汇总按钮,汇总表自动填充汇总内容到相应位置

分析:

1.要使用for循环,从第2张表开始循环一直到最后一张表也就是sheets.count;

2.报表日期在每张表的e5单元格。可以用range(“e5”)获取相应的值;按顺序填充到汇总表的B列从第10行开始填充;

3.审核人在每张表的e6单元格。可以用range(“e6”)获取相应的值;按顺序填充到汇总表的C列从第10行开始填充;

4.总计(金额)在每张表的e44单元格。可以用range(“e44”)获取相应的值;按顺序填充到汇总表的D列从第10行开始填充;

5.插入一个汇总按钮,指定宏huizong()

代码:

Sub huizong() Dim i as integer For I =2 to sheets.count        Sheet1.range(“b” & i+8)=sheets(i).range(“e5”) Sheet1.range(“c” & i+8)=sheets(i).range(“e6”) Sheet1.range(“d” & i+8)=sheets(i).range(“e44”) NextEnd sub

对数据分析或者vba有兴趣的朋友可以关注我的公众号,我会在公众号里面发学习笔记,全是干货。一起学习一起成长!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。