打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA数据库解决方案第55讲:工作表查询时,结合数组,实现在工作表查询的同时,完成分工作表的归类汇总

大家好,我们继续讲解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  对于变体变量的数组是否清楚呢?

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
提取固定位置(行或者单元格)数据的方法
完全手册Excel VBA典型实例大全:通过368个例子掌握
工作表数据与UserForm窗口的交互:如何实现数据的精确查找
如何在Excel中使用SQL语言?
利用VBA代码,在数据库中根据需要动态删除和建立数据表
VBA入门51:用数组删除行
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服