人气 3363

使用EXCEL VBA SQL语句实现一键查询 [复制链接]

时时钟无艳 2017-3-18 16:30:48
Excel经常用的功能大部分在软件界面体现了,还有一些不常用的在菜单里面也能找到。VBA宏代码相对Excel公式来说,用的频率要少些,但是VBA有他特殊的用途。下面说一下VBA和SQL语句结合使用怎么实现表格数据一键查询,【注:SQL全称是结构化查询语言,是一种数据库查询和程序设计语言,对这方面感兴趣的朋友可以自己了解一下。】举个例子:用EXCEL VBA SQL语句查询总成绩大于290分的学生一、正常的操作步骤是:1、用Excel打开表格,点击插入——数据透视图

1489826165468616.jpg

1489826165468616.jpg

2、在数据透视图界面,选择行标签字段和求和项字段

1489826298938566.jpg

1489826298938566.jpg

1489826327824531.jpg

1489826327824531.jpg

3、把行标签和求和项表格数据进行排序,选出成绩大于290的记录用数据透视图功能操作很简便,除此之外用分类汇总功能也可以实现,只不过前者更方便些。
二、EXCEL VBA SQL语句实现表格数据的一键查询1、用excel打开表格,按alt+F11打开VBA工程界面,在个人工作簿里新建模块,在模块的代码区域输入下面的代码

1489826350917609.jpg

1489826350917609.jpg

2、根据实际需要在SQL变量区域输入自己想要的查询代码,保存,F5运行,注意[表名$]这种写法

1489826378445120.jpg

1489826378445120.jpg

以上是用Excel VBA SQL语句实现了表格查询的一键自动化操作(按ALT+F8),在规则不经常变动的情况下使用很实用,以下是代码供复制粘贴。
Sub SQL查询()Dim cnn As Object, rs As Object, SQL As StringSet cnn = CreateObject("adodb.connection")  '创建数据库连接cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ActiveWorkbook.FullNameSet rs = CreateObject("adodb.recordset")  '创建一个数据集SQL = "select 姓名,sum(成绩) from [原始数据$] group by 姓名 HAVING sum(成绩)>290"  '设置SQL查询语句Set rs = cnn.Execute(SQL)  '执行查询ActiveWorkbook.Worksheets(2).Cells.ClearContentsDim i As IntegerFor i = 1 To rs.Fields.CountActiveWorkbook.Worksheets(2).Cells(1, i) = rs.Fields(i - 1).Name  '填写标题到表2NextActiveWorkbook.Worksheets(2).Range("a2").CopyFromRecordset rs  '复制记录集到表2rs.CloseSet rs = Nothingcnn.CloseSet cnn = NothingEnd Sub
您需要登录后才可以回帖 登录 | 立即注册

QQ|手机版|精益人 ( 沪ICP备19004111号-1 )|网站地图

GMT+8, 2024-12-22 19:27 , Processed in 0.257147 second(s), 23 queries .

Powered by Lean.ren X3.5 Licensed  © 2001-2030 LEAN.REN