分享

VBA数据库解决方案第52讲:利用ADO,把工作表数据汇总成一个类似数据透视表的报表

 xfzxlgs 2022-10-26 发布于江西

大家好,我们继续讲解VBA数据库解决方案,今日讲解第52讲内容:利用ADO,把工作表数据汇总成一个类似数据透视表的报表。 提到数据透视表,对于从事数据统计人员来说,是非常熟悉了,数据汇总,排重等等工作都可以依靠数据透视表来完成.是的,当数据少时,用EXCEL自带的数据透视表的功能非常方便,但是,当数据多时,往往力不从心。有没有好的办法?当然有!VBA会一直陪伴你的左右。

1  应用场景的具体分析

实例:在一个EXCEL文件中,有如下的工作表数据:

图片

我们要根据此数据形成一个类似于数据透视表的报表文件,该如何做?我们可以先看看形成的数据透视表的样子:

图片

当然,此数据透视表是分若干个步骤做成来的,最后是数值粘贴才形成的这个文件。我们就以这个数据透视表为蓝本,看看我们VBA是如何做到的。

2  把工作表数据做成一个类似数据透视表报表的代码及代码解读

下面我给出我的代码:

Sub mynzRecords_52() '第52讲  把工作表数据做成一个类似数据透视表的报表.

 Dim cnADO, rsADO As Object

    Dim strPath, strSQL As String

    Worksheets("52").Select

    Cells.ClearContents

    Set cnADO = CreateObject("ADODB.Connection")

    Set rsADO = CreateObject("ADODB.Recordset")

     strPath = ThisWorkbook.FullName

     cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

     strSQL = "select 型号,生产厂,供应商,SUM(数量) from [数据备份$] group by 型号,生产厂,供应商"

     arr = Array("型号", "生产厂", "供应商", "数量")

     [a1:d1] = arr

     [a65536].End(xlUp).Offset(1, 0).CopyFromRecordset cnADO.Execute(strSQL)

    cnADO.Close

    Set cnADO = Nothing

    Set rsADO = Nothing

   End Sub  

代码截图:

图片

代码讲解:

1)  本讲的内容类似于上讲的内容,上一讲将的是多工作表的汇总,这讲讲的是单工作表的汇总,比上讲要容易些。

2) 重点的语句理解是 cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

 要注意连接的方式,不要弄错。

3)   strSQL = "select 型号,生产厂,供应商,SUM(数量) from [数据备份$] group by 型号,生产厂,供应商"

   这句是SQL语句 的写法,要注意写法,在自己写的时候尽可能从我的代码中复制过去(EXCEL程序文件,也就是我的文中截图的原始文件会随《VBA数据库解决方案》一书一起分享)

下面看我们得到的结果:

图片

文件形成了,看起来要比数据透视表的文件舒服。

今日内容回向:

1  上面的数据透视表文件如何做成?

2  上述代码和上一讲的代码类似,那么多表文件如何能做成数据透视表文件呢?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多