sql 字段求和_VBA+SQL-常用函数

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

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

如max函数

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

如AVG函数

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

使用实例说明:

源数据:

704f54f6abadbafda3c615752d6c52b7.png

查询内容

对英语成绩最高分:

79d477f9159c99ef9fad0dfb87e3f385.png

对英语成绩平均分:

56b1000457eef4bbe07cdd1a59d1d078.png

代码运行的结果如下:

da7b3cd46cda3d9e31d19edec712aac4.gif
5b82e00f90e9e565e66f5163ace10b30.gif

代码如下:

aca973f36612fc0b159c1b0b7c685a98.png
d2b422e66cb22252cdb7ffb26b8f2418.png

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文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值