VBA+SQL-常用函数

SQL语句中的一些简单计算函数:

如max函数

SELECT MAX(列字段) AS 别名1 FROM [工作表名$]

如AVG函数

SELECT AVG(列字段) AS 别名1 FROM [工作表名$]

使用实例说明:

源数据:

VBA+SQL-常用函数

查询内容

对英语成绩最高分:

VBA+SQL-常用函数

对英语成绩平均分:

VBA+SQL-常用函数

代码运行的结果如下:

VBA+SQL-常用函数

VBA+SQL-常用函数

代码如下:

VBA+SQL-常用函数

VBA+SQL-常用函数

Sub FuYun_Sql_Avg()

Dim cnn As Object, rst As Object

Dim Mypath As String, Str_cnn As String, Sql As String

Dim i As Long

Set cnn = CreateObject("adodb.connection")

'以上是第一步,后期绑定ADO

Mypath = ThisWorkbook.FullName

'以上获取当前工作簿的路径及名称

If Application.Version

< 12 Then

'格式为.xls,调用下述语句

Str_cnn = "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & Mypath

Else

'格式为.xlsx,调用下述语句

Str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & Mypath

End If

cnn.Open Str_cnn

'以上是第二步,建立链接

Sql = "SELECT avg(英语) as 平均分 FROM [英语-成绩单$]"

'Sql语句,查询所有数据,并按照英语成绩进行排序

[g2:g1000].ClearContents

'清空[g2:g1000]区域内容

Range("g2").CopyFromRecordset cnn.Execute(Sql)

'Execute语句先执行SQL语句

'使用单元格对象的CopyFromRecordset方法将SQL查询到的内容复制到D2单元格为左上角的单元格区域

'以上是第三步,执行SQL语句并将数据读入表格指定区域

cnn.Close

'关闭链接

Set cnn = Nothing

'释放内存

End Sub

代码解析

代码我放了一个例子,大部分的代码是一致的,只有SQL的句子不一样。 SQL支持的函数有 COUNT函数(计数)、SUM函数(求和)、MIN(最小值)

SELECT COUNT(列字段) AS 别名1 FROM [工作表名$]

SELECT SUM(列字段) AS 别名1 FROM [工作表名$]

SELECT MIN(列字段) AS 别名1 FROM [工作表名$]

多种函数还可以一起使用。比如最高分和平均分:

Sql = "SELECT MAX(英语) as 最高分,SELECT avg(英语) as 平均分 FROM [英语-成绩单$]"

延伸阅读

VBA+ADO+SQL语句,小试牛刀。

SQL 查询语句-WHERE

SQL 的排序 ORDER BY

VBA+SQL-按顺序提取

私信 SQL 可以获取SQL代码的Excel文件

私信 视频 可以获取54集VBA入门视频

私信 VBA或 vba 可以获取文章中含VBA代码的Excel文件


分享到:


相關文章: