所有表单对象_表单太多汇总太累?请看这里,我们带你一键汇总

7fa69c61aa8abe08b7868fa2d7f9144e.png
这个表我刚刚不是已经复制了吗?
啊呀,这两个表长得太像,我又粘错了。
粘了一下午,忘记保存,得了,全部重来吧。
我刚刚的汇总数据到哪去了?怎么找不到了呢?
……

大家在工作中有没有因为要统计数据而遇到过上面的这些问题呢?

面对月度、季度、年度各种各样的表单数据,一次次重复着复制粘贴操作的你,是否觉得人生无趣呢?

今天,我们将会带领大家,一键汇总

那么如何实现呢?下面就给大家一步步讲解。

1、新建-汇总表

首先,我们在Excel中创建一个Sheet,将其命名为“汇总表”。

汇总表用于存放我们需要汇总的所有表单数据。

94d488026be6467ffcba3a24e2d8ef14.png

然后,右击汇总表,查看代码,进入VBE界面。

ea6c217bbcf313577ad1da8fda078786.png

双击Sheet3(汇总表) ,进入代码窗口。

de60dc69a4ec7db3e742e79487d941ee.png

2、核心-For

我们这个功能的核心,就是要让系统代替我们,自动把所有的表单都看一遍,然后再帮助我们复制粘贴。

那么,怎么让系统把所有的表单都看一遍呢?这时我们就需要用到之前学过的For循环语句了。(对于For循环不太了解的朋友,可以下面查看这篇文章)

数据大作手:VBA-从一而终For循环​zhuanlan.zhihu.com
c2790df0d227d5808cd4f51d445e4b14.png

对应代码如下:

For i=1 to Sheets.Count

Sheet,是一种对象,意思是表单,即我们常看到的Sheet1,Sheet2……

Count是对象Sheet的一种属性,表示对象的个数。

这里的Sheets.Count,指的就是表单的数目。

(对于“对象”和“属性”概念不太清楚的朋友,可以查看这篇文章)

数据大作手:写VBA代码前你所需要掌握的概念(上)​zhuanlan.zhihu.com
c2790df0d227d5808cd4f51d445e4b14.png

For i=1 to Sheets.Count 这句代码,就是从第一张Sheet开始,循环到最后一张Sheet.

3、判断-If

接着,我们需要让系统把汇总表和其他表单区别开来。

如果当前的表单不是汇总表,就把表单的内容复制粘贴到汇总表;

如果当前的表单是汇总表,就不做任何操作。

(对于If 判断不太了解的朋友,可以查看这篇文章。)

数据大作手:系统居然向我自动问好?2个小技巧轻松实现​zhuanlan.zhihu.com
c2790df0d227d5808cd4f51d445e4b14.png

对应代码如下:

If Sheets(i).Name <> "汇总表"

Then ……

End If

Sheet,是一种对象,意思是表单,上面我们介绍过了。

Count是对象Sheet的一种属性,表示对象的名称。

Sheets(i).Name就是第i张表单的名称。

<>是不等于的意思,相当于数学里的不等号≠。

4、操作-宏

接下来,我们怎么把其他表单里的数据粘贴到汇总表里呢?

我们主要通过录制宏的方式实现该功能。(对于录制宏不太了解的朋友,可以查看这篇文章。)

数据大作手:高效学习VBA的4大技巧,打破从入门到放弃的循环​zhuanlan.zhihu.com
c2790df0d227d5808cd4f51d445e4b14.png

下图是录制宏的示例操作。

b87da06a2d4b30b94c554c6c2114d919.png

在这里,我们还需要知道每个Sheet表的数据源大小。

通过以下代码实现:

j = Sheets(i).Range("A65536").End(xlUp).Row + 1'取每张表的最后一行的值。

Sheets(i).Range("A2:M" & j).Copy'复制每张表的数据,第一行是标题,不需要复制进去。

这里的Range是一种对象,意思是单元格区域。

代码中的其他内容,我们会在之后的学习过程中进行具体讲解。

5、调用

代码编辑好之后,我们该如何调用它呢?

我们在"开发工具"-"插入"中,选择"按钮控件"。

在汇总表上,进行拖动,画出一个按钮。

双击按钮,在弹出的对话框中,选择刚才建立的VBA代码,即"Sheet3_汇总表",实现

代码的调用。

82befd8c18a20ef1514b3cf589aea88d.png

6、运行

最终的运行情况如下图所示。

acf4679abcbe9ed04784fcbfa3c5c637.png

相应的代码如下:

Sub 汇总表()
Dim i, X, j As Integer
For i = 1 To Sheets.Count
    If Sheets(i).Name <> "汇总表" Then
        j = Sheets(i).Range("A65536").End(xlUp).Row
        Sheets(i).Range("A2:M" & j).Copy
        X = Sheets("汇总表").Range("A65536").End(xlUp).Row + 1
        Sheets("汇总表").Range("A" & X).Select
        ActiveSheet.Paste
    End If 
Next
End Sub

本篇栗子涵盖了之前学习的内容,相对来说比较综合,大家可以多练习下。

看完三件事:

1.点赞,让更多的人也能看到这篇文章(收藏不点赞,都是耍流氓)

2.关注我和我的专栏,让我们共同成长

3.关注公众号"数据大作手",定期分享数据分析方面的干货

感谢你的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值