VBA 执行SQL进行分组聚合

该篇文章介绍了如何在VBA中通过ADO连接Excel,执行SQL查询(GROUPBY示例),并将结果存储到字典对象MysqlDictTwoCeng_BIG中的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Function MysqlDictTwoCeng_BIG()
     On Error Resume Next
    Dim cnn As Object, rst As Object
    Dim strPath As String, str_cnn As String, strSQL As String
    Dim i As Long
    Set cnn = CreateObject("adodb.connection")
    '以上是第一步,后期绑定ADO
    strPath = ThisWorkbook.FullName
    '‘设置当前工作簿为数据源
    If Application.Version < 12 Then
        str_cnn = "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & strPath
    Else
        str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & strPath
    End If
    cnn.Open str_cnn
    '以上是第二步,建立链接
  
    strSQL = "SELECT [Title 1],title2,SUM([value 1]),SUM(value2), FROM [Sheet1$C1:T100] group by [Title 1],title2"
    Set rst = cnn.Execute(strSQL)
    '创建一个字典存放我们SQL的数据
    Dim dictResults As Object
    Set dictResults = CreateObject("Scripting.Dictionary")
    While Not rst.EOF
        strKey =  rst.Fields(0).value & rst.Fields(1).value
        strvalue = rst.Fields(2).value &  rst.Fields(3).value 
    ' 将键和值存入字典
        dictResults.Add strKey, strvalue
        rst.movenext
    Wend
    Set MysqlDictTwoCeng_BIG = dictResults
    cnn.Close '关闭链接
    Set cnn = Nothing '释放内存
On Error GoTo 0
End Function

注意:

        1.对于有空格或者特殊字段的值要用[]包括,例如[Title 1]

        2. [Sheet1$C1:T100]范围一定要包含组合的字段即表头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值