大家好,我们继续讲解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 上述代码和上一讲的代码类似,那么多表文件如何能做成数据透视表文件呢? |
|
来自: xfzxlgs > 《VBA数据库解决方案》