excel表格_excel函数公式大全_execl从入门到精通
利用ADO,把工作表数据汇总成一个类似数据透视表的报表2024-06-02 17:11:22
大家好,我们继续讲解VBA数据库解决方案,今日讲解第52讲内容:利用ADO,把工作表数据汇总成一个类似数据透视表的报表。 提到数据透视表,对于从事数据统计人员来说,是非常熟悉了,数据汇总,排重等等工作都可以依靠数据透视表来完成.是的,当数据少时,用EXCEL自带的数据透视表的功能非常方便,但是,当数据多时,往往力不从心。有没有好的办法?当然有!VBA会一直陪伴你的左右.
实例:在一个EXCEL文件中,有如下的工作表数据:
我们要根据此数据形成一个类似于数据透视表的报表文件,该如何做?我们可以先看看形成的数据透视表的样子:
当然,此数据透视表是分若干个步骤做成来的,最后是数值粘贴才形成的这个文件。我们就以这个数据透视表为蓝本,看看我们VBA是如何做到的。
下面我给出我的代码:
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 上述代码和上一讲的代码类似,那么多表文件如何能做成数据透视表文件呢?
标签: excel表如何汇总子表数据