打印本文 打印本文 关闭窗口 关闭窗口
Excel根据年月,将总表数据自动显示到各月份表的VBA代码
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1144  更新时间:2009/6/9 2:16:40  文章录入:mintao  责任编辑:mintao

  本例子,我们来解决这样的一个问题,下看下图!

  本文为解决网名为“小妮子”的网友的问题而发。

  先看好这个表的名称,是数据总表;

  该表里面,第2列是日期字段列;下面,我们要实现的效果是,通过判断总表的第2列的值,按照月份,将对应的数据自动填充到各表。

  比如说,月份为1月的总表里面的所有的数据,将自动填充到表名称为1的数据表里面,其它依此类推。

  其它表的名称,分别以月份作为表的名称,如:1、2、3、4、5……12

  下面再看看其他表的数据,是空的,如下图的1表!

  其它表的数据,是通过VBA代码功能,自动填充并显示数据的,不需要手动复制粘贴。

  要实现这样的功能,以月份为参照对象,将总表的对应的月份的数据填充到对应的表里面,那么,得使用VBA来实现。

  首先,在总表里面,通过控件工具栏,拖出一个按钮,如下图!

  之后双击按钮,进入按钮的代码编写模式,给按钮添加如下图的代码,即可完成。

  为分保大家的学习,下面,贴出源代码:

Private Sub CommandButton1_Click()

Dim MyMonth  '获取总表第2列的单元格的月份

Dim TableCount As Integer '工作表总数
TableCount = Worksheets.Count

Dim MyTableRows

For k = 2 To TableCount '除总表之外的其它工作表
    MyTableRows = 2
    For Current = 2 To 65536 '从第2行扫描总表的行数据
      If (Worksheets(1).Cells(Current, 2).Value <> "" _
      And Month(Worksheets(1).Cells(Current, 2).Value) = k - 1) Then
          For m = 1 To 30
              Worksheets(k).Cells(MyTableRows, m).Value = Worksheets(1).Cells(Current, m).Value
          Next
          MyTableRows = MyTableRows + 1
      End If
    Next
Next
End Sub

打印本文 打印本文 关闭窗口 关闭窗口