vba多表数据汇总(VBA数据库分工作表归类汇总数据)
【分享成果,随喜正能量】真正的智者,会从外物回到内心,通过别人看清自己。经过太多坎坷,总会遇见生活的甜,因为,难关已过,好福必至。。
《VBA数据库解决方案》教程(10090845)是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA数据库分工作表归类汇总数据
第五十五讲 工作表查询时,实现分工作表数据归类汇总
大家好,我们继续讲解VBA数据库解决方案,今日讲解第55讲内容:工作表查询时,结合数组,实现在工作表查询的同时,完成分工作表的归类汇总。今日的内容对于实际的工作非常重要,也是我根据实际的工作场景加工整理的一段代码。
1 应用场景的具体分析实例问题:大家看我下面的工作表数据截图,每型号产品是给不同的生产厂生产的,供货的是不同的供应商,那么问题来了,我要实现分供应商把各个型号进行汇总,同时把供应商的分别放置在不同的工作表中,如何实现呢?
我们先进行一下问题的分析:
1) 在数据处理前我们要知道有多个供应商,而且这个数据是不固定的。
2) 要根据供应商的数目,插入工作表。
3) 要按照供应商的不同来提出数据,并讲提出的数据加入相应的工作表。
看起来很复杂,但确实是我们的工作实例了,如财务的工资表可以根据代码分部门;物流部门可以按此代码分供货商,销售部门可以按此代码进行客户的分类等。
2 工作表查询的同时,完成分工作表归类汇总的代码及代码解读好了,还是看我提供的代码吧:
Sub mynzRecords_55() '第55讲 结合数组实现在工作表查询的同时,完成分工作表的归类汇总
Dim cnADO, rsADO As Object
Dim strPath, strSQL3, strSQL4 As String
Worksheets("55").Select
Cells.ClearContents
Set cnADO = CreateObject("ADODB.Connection")
strPath = ThisWorkbook.FullName
cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath
Arr = cnADO.Execute("Select Distinct 供应商 From [数据备份$]").GetRows
For k = 0 To UBound(Arr, 2)
strSQL = "Select 型号,数量,生产厂,单价 From [数据备份$] Where 供应商='" & Arr(0, k) & "'" & " order by 型号"
ActiveWorkbook.Sheets.Add after:=Worksheets("数据备份")
ActiveSheet.Name = Arr(0, k)
With Sheets(Arr(0, k))
[A1:D1] = Array("型号", "数量", "生产厂", "单价")
.[A2].CopyFromRecordset cnADO.Execute(strSQL)
End With
Next
cnADO.Close
Set cnADO = Nothing
End Sub
代码截图:
代码讲解:
1 Arr = cnADO.Execute("Select Distinct 供应商 From [数据备份$]").GetRows
上述代码把供应商的名称排重手计入变体变量ARR,需要注意的是,这个ARR是个二维数组。
2 strSQL = "Select 型号,数量,生产厂,单价 From [数据备份$] Where 供应商='" & Arr(0, k) & "'" & " order by 型号"
上述代码实现了按供应商的名称提取数据。Arr(0, k)的数据即是供应商的名称
3 ActiveWorkbook.Sheets.Add after:=Worksheets("数据备份")
ActiveSheet.Name = Arr(0, k)
上述代码是把供应商的名称作为工作表的名称,在数据备份工作表之后插入。
下面看代码的运行:
我们看到新增了两个工作表,名称和供应商的一致,里面是我们需要提出的数据。
今日内容回向:
1 如何实现不确定数据的数据提取?
2 对于变体变量的数组是否清楚呢?
本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】修行路上,是非、纷争慢慢清零,心中无闲事,则日日是好日。不计较”吃亏”,才能享有一个自在的生活;不吝于”布施”,才能拥有一个富有的人生。。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com