SQL语句中的一些简单计算函数:
如max函数
SELECT MAX(列字段) AS 别名1 FROM [工作表名$]如AVG函数
SELECT AVG(列字段) AS 别名1 FROM [工作表名$]使用实例说明:
源数据:

查询内容
对英语成绩最高分:

对英语成绩平均分:

代码运行的结果如下:


代码如下:


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-按顺序提取
该博客介绍了如何在Excel VBA中利用SQL语句进行数据查询,包括使用MAX、AVG、COUNT和SUM等函数计算英语成绩的最高分、平均分等统计指标。示例代码展示了如何连接Excel数据源并执行SQL查询,将结果填充到工作表的特定区域。此外,还提及了其他可组合使用的SQL函数以及VBA代码的解释。

1188

被折叠的 条评论
为什么被折叠?



