示例代码
Sub Select_Group1()
Dim cnn As New ADODB.Connection '创建Connection对象,该对象代表了Excel与后面指定数据库的连接
Dim rst As ADODB.Recordset '创建Recordset对象,该对象用来保存执行SQL语句后生成的数据集
Dim SQL As String
Dim i As Integer
Dim mypath As String
On Error GoTo ErrMsg '
mypath = ThisWorkbook.FullName
cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & mypath '使用Connection对象的Open方法来连接指定数据库与数据表的位置
SQL = "SELECT RS,逾期天数 ,SUM(逾期金额) As 金额,COUNT(*) As 名下账户 FROM [sheet1$] GROUP BY 逾期天数,RS"
Set rst = cnn.Execute(SQL) '执行SQL语句
Worksheets(2).Select
Cells.ClearContents ‘在Excel中放置数据
For i = 0 To rst.Fields.Count - 1
Cells(1, i + 1) = rst(i).Name
Next
Range("a2").CopyFromRecordset rst
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
Exit Sub
ErrMsg:
MsgBox Err.Description, , "Description of Error"
End Sub
数据源
在使用的数据源是excel表的第一个表,表名为【sheet1】,数据如下:
前提条件
要先在【工具】-【引用】中引用两个库,Microsoft ActiveX Data Object 2.8 Library 与 Microsoft ADO Ext.2.8 for DDL and Security 库。不同的操作系统ADO(active data object,动态数据对象)的版本会有所不同。
友情提示
在使用这个方法之前,要确定excel的原表中是否有空的记录,如果有的则要删除,否则有一定概率会把空的记录也统计到结果中。