- ?
excel办公小技巧:vba使用sql语句获取excel表格数据教程
杰弗瑞
展开
在excel办公中,用VBA加上SQL语句实现对excel表格的数据获取,对于处理一些大数据量的表格来说是非常实用的。SQL是结构化查询语言,是数据库开发中用的程序设计语言,数据库里的数据表跟EXCEL里的表格其实是很类似的,所以用VBA加SQL语句可以实现类似的表格查询操作。
举个例子:在EXCEL里用VBA+SQL来查询总成绩大于290分的学生
一、手工操作的步骤是:
1、 EXCEL打开如下表格,点击插入-数据透视图,点击创建数据透视图
2、 在出现的数据透视图界面,点击姓名为行标签,点击成绩为求和项字段
3、 在左侧的出现的行标签和求和项表格数据进行排序,手工选出成绩大于290分的记录。
用上面的数据透视图方法很方便,步骤也少,比分类汇总功能要简便些。
二、VBA加上SQL语句实现EXCEL表格数据的查询
1、 先用EXCEL打开表格,调出VBE工程界面(ALT+F11),建议在个人工作簿新建个模块,把代码输入到右侧的区域。注:用个人工作簿的好处是,每次启动EXCEL不用手动启用宏。
2、 根据自己的表格字段和功能需求,修改好SQL代码后,保存按F5快捷键运行。注:SQL语句中表名要用[表名$]这种写法。
以上是在EXCEL用VBA加SQL语句实现对表格的自动查询,调用的方法是按ALT+F8,选择相应的代码名称,这里的名称是SQL查询。用这种方法对于规则不经常变动的情况下使用很实用,特别是在数据量大的情况下。
附上截图代码
Sub SQL查询()
Dim cnn As Object, rs As Object, SQL As String
Set cnn = CreateObject("adodb.connection") '创建数据库连接
cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ActiveWorkbook.FullName
Set rs = CreateObject("adodb.recordset") '创建一个数据集
SQL = "select 姓名,sum(成绩) from [原始数据$] group by 姓名 HAVING sum(成绩)>290" '设置SQL查询语句,这个根据实际需要改写,注意【表名$】这种写法
Set rs = cnn.Execute(SQL) '执行查询
ActiveWorkbook.Worksheets(2).Cells.ClearContents
Dim i As Integer
For i = 1 To rs.Fields.Count
ActiveWorkbook.Worksheets(2).Cells(1, i) = rs.Fields(i - 1).Name '填写标题到表2
Next
ActiveWorkbook.Worksheets(2).Range("a2").CopyFromRecordset rs '复制记录集到表2
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
End Sub
对于EXCEL2007版本的电子表格,以上的cnn.Open后的字符串要改成"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
- ?
Excel如何批量建立工作表!
Feronia
展开
工作表创建大家应该都不陌生,可能绝大多数的小伙伴会一张一张建立工作表。
倘若我们要快速建立50甚至上100张工作表怎么办呢?
方案一:自定义工作表张数
具体操作步骤:点击文件,点击选项,然后设置工作表包含数量。
如果你要打开这个工作簿有20张,你只需要填写数字20即可。
方案二:通过数据透视表显示报表筛选页的方法
具体操作步骤:
①先把标题和表名称罗列出来,比如我现在要12个月的报表。
②选中标题和表名称,然后点击插入选项卡,建立数据透视表。
③把字段名称退拽至报表筛选区间
④在数据透视表工具下,选项里面选择报表筛选页。
⑤点击确定,然后就会发现神奇的事情了。
⑥清除内容,右击选定全部工作表,然后Ctrl+A选定工作表所有内容,然后点击开始选项卡下方的编辑组里面的清除,点击全部清除。
--------------------------------------------------------------
每日互动
①你之前用过这样的操作吗?
②目前有木有什么工作问题想解决吗?可以留言,老师免费为你解答哦!
- ?
利用VBA,建立起一个MDB数据库连接的通用代码
Qiao
展开
今日讲解的内容为如何建立一个数据库的连接,并实例讲解利用连接从数据库中查到有用的记录,填在表格中的方法。
我们要先打开一个工作表,它的A列数值为要在数据库中查询的字段,并把在数据库中查到此字段的其他内容填充到这个工作表中的B:G列的位置。好我们先看下面的代码,在代码的过程中均有详细的讲解。有的容易些,有的难懂些,不过都没关系,有兴趣的读者可以仔细地琢磨,都是一步一步看过来的。我在学VBA的时候,资料还很少很少,有的需要自己的摸索。待这个平台的资料多些了,也希望能有位大侠给出本书,利于大家的学习。
1 Dim myData As String, myTable As String
2 Dim wb As Workbook
3 Dim ws As Worksheet
4 Dim i As Long, j As Long
5
6
7 Dim cnn As ADODB.Connection
8 Dim rs As ADODB.Recordset
9 Set wb = ThisWorkbook '指定工作簿
10 Set ws = wb.Sheets("A-RR") '指定工作表名称
11 Dim APPPATH
12 APPPATH = ActiveWorkbook.Path '& "\" '路径名称
13 ChDir APPPATH
14 myData = "D:\RR" & "\myData.mdb" '指定新数据库名称(完整路径)
15 myTable = "RR资料" '指定数据库的数据表名称
'检查是否已经存在同名数据库文件
16 If Dir(myData) = "" Then
17 MsgBox (myData & "不存在!")
'不存在的情况下,释放变量,退出
18 Set wb = Nothing
19 Set ws = Nothing
20 Set rs = Nothing
21
22
23 Set cnn = Nothing
24 End
25 Else
'如果已经存在了数据库文件,就检查是否存在数据表
'建立与数据库的连接
26 Set cnn = New ADODB.Connection
27 With cnn
28 .Provider = "microsoft.jet.oledb.4.0"
29 .Open myData
30 End With
'开始查询是否存在该数据表
31 Set rs = cnn.OpenSchema(adSchemaTables)
32 Do Until rs.EOF
33 If LCase(rs!table_name) = LCase(myTable) Then GoTo hhh '如果查到则退出循环
'继续查询
34 rs.MoveNext
35 Loop
'释放变量,退出(这是没有查到的情况)
36 Set wb = Nothing
37 Set ws = Nothing
38 Set rs = Nothing
39
40
41 Set cnn = Nothing
42 MsgBox ("不存在此工作表!")
43 End
hhh:
44 End If
'到此是找到了某个记录,并打开了数据库
45 Sheets("A-RR").Select
46 Range("B2:G3000").Clear '做填充数据的准备
47 Set rs = New ADODB.Recordset
48 t = 2
49 Do While Cells(t, 1) <>""
50 Cells(t, 1).Select
51 Sql = "select * from " & myTable _
52 & " where RR = " & " '" & ws.Cells(t, 1).Value & "'"
53 rs.Open Sql, cnn, adOpenKeyset, adLockOptimistic
54 If rs.RecordCount = 0 Then
'如果数据库中没有工作表的某行数据,就
55 ws.Cells(t, 2).Value = "No Find"
56 ws.Cells(t, 3).Value = "No Find"
57 Else
'如果数据库中有工作表的某行数据,就将数据进行更新
58 ws.Cells(t, 2).Value = rs.Fields(1)
59 ws.Cells(t, 3).Value = rs.Fields(2)
60 End If
61 rs.Close '关闭,此处的RS必须要关闭,必须的。
62 t = t + 1
63 Loop
64 MsgBox "完成!", vbInformation + vbOKOnly
'关闭数据库及查询数据集
65 cnn.Close
'释放变量
66 Set wb = Nothing
67 Set ws = Nothing
68 Set rs = Nothing
69 Set myCmd = Nothing
70 Set myCat = Nothing
71 Set cnn = Nothing
看看下面的截图:
到此这项任务就完成了,利用VBA控制EXCEL是本平台的较高水平的内容,但程序的思想、思路和写函数是一致的,都要按规定的线路来进行。如果检测到没有按照自己的设想来运行程序,那是绝对不可以的。关注本平台,会经常有类似大段的代码共大家参考。当然,上述的代码也是解决这类问题的一个通用的代码,读者可以使用,没问题。
分享成果,随喜正能量
- ?
Excel来帮忙,教你展示数据盈亏!
安白
展开
中公中级会计职称话说一图胜千言,在展示数据变化时,图表的视觉效果是远远超过苍白的数字的。咱们今天就说说如何用盈亏图进行差异分析。
以下面这个模拟的销售数据表为例,B列和C列分别是13年和12年同期的销售数据,D列用来计算两组数据的差异情况。
在这个表中,你能快速看出每个月的数据差异以及一年来的差异走势吗?
中公中级会计职称估计很难看出数据的差异变化及走势吧?
接下来咱们就看看如何用图表来展示数据的差异:
首先在E列建立一个辅助列,E2输入公式并向下复制。
=D2
中公中级会计职称选中E列数据区域,按下图所示步骤设置条件格式:
中公中级会计职称来看看设置完毕后的样子吧:
中公中级会计职称怎么样,比起左边的数字,右边的图示效果更加直观了,你也试试吧。
- ?
仅需4步,轻松在Excel处理300万行数据
Zinia
展开
这场软件PK,是时候分出胜负了,今天就是大结局。有必杀技在手,Excel已经看到了胜利的曙光。
在99%的人眼中,Excel能处理的最大数据是100万行,假如现在是300万行,估计都束手无策,只能寄希望于数据库。不学习真的限制了你的想象力,300万行数据Excel也能轻松统计。
300万行一个表肯定是存放不下,可以存放在多个工作表、多个工作簿甚至是数据库,不管何种储存形式,Excel都可以处理。今天,卢子就以存放在多个工作表为例进行说明。
在Excel存放着3个工作表,每个工作表100万行数据,合计300万,现在要统计每个姓名的总金额。
Step 01点数据→新建查询→从文件→从工作簿,浏览到指定的工作簿,导入,在导航器再选择工作簿的名称(相当于选中所有工作表),点编辑。
Step 02 选择Data这一列,右键选择删除其他列,再点扩展按钮,确定。展开后就看到所有数据,将第一行用作标题。
Step 03 点关闭并上载至,选择仅创建连接,勾选将此数据添加到数据模型。划重点,这一步是最重要的,不能有半点差错。数据模型就相当于一个大型的数据库,甚至可以容纳几千万行数据,正因为如此,才能让Excel突破百万行数据。
Step 04 直接创建透视表,默认情况下透视表的数据源就是数据模型中的数据,再勾选姓名和金额就完成统计。
神奇吗?有没一种想亲自体验一把的想法?
- ?
Excel同样可以操作MySQL中的数据,这里有完整教程
小兔子
展开
作为同门的数据库产品,Excel操作Access、SQLServer中的数据非常简单。但如果想在Excel中处理MySQL中的数据呢?MySQL是和php珠联璧合的一个数据库,网站开发中经常用到,如果Excel也能访问它就会给工作带来很多方便。
例如,MySQL数据库中的用户登录数据表,有时希望在Excel中对该表进行一些分析:
操作步骤如下:
一、到mysql官网下载odbc连接驱动
下载地址为:https://dev.mysql/downloads/connector/odbc/
可下载的驱动程序共有4个文件,请根据自身情况选择下载。例如,我们现在使用的是64位的win7系统,那么就下载安装64位的驱动:
32位和64位的驱动又分别包含2个文件,一个是安装包,一个是压缩包。一般选择下载msi安装即可。
选择文件下载时,将弹出登录页面;如果不需要登录,可点击“No thanks, just start my download.”直接进入下载。
安装驱动的过程中,有可能会出现这样的错误提示:
如果使用压缩包安装,则会直接提示缺少“msvcr120.dll”的错误。
这两种错误其实都指向了同一个问题,最简单的解决办法就是安装Visual C++ 2013运行库。微软官方的下载地址为:
https://microsoft/zh-cn/download/details.aspx?id=40784
同样的,这里有32位和64位2种文件可供下载,请根据自身情况选择。
二、创建数据源
进入“控制面板--系统和安全--管理工具”,双击打开“数据源(ODBC)”,点击“添加”:
点击“完成”后,接着设置要连接的mysql数据库:
点击“ok”后即可增加该数据源:
三、在Excel中建立连接
打开Excel,选择“数据-自其它来源-来自数据连接向导”:
选择“odbc dsn”:
“下一步”后选择刚刚创建的mysql:
然后再选择要连接的数据库及库中的数据表:
接着再设定一个连接名称就ok啦:
注意:mysql数据库中的表名称和表字段不能使用中文,否则将带来乱码问题。因为excel和mysql的默认编码方式不一样,处理起来会相当麻烦。
- ?
今天教大家如何用office建立一个数据库批量处理大数据
孟向梦
展开
大家好!,我是你们的小编天天,今天教大家如何用office建立一个数据库批量处理大数据,通常我们在日常使用过程常常会遇到数据量很大的表,需要统计或者查找故障数据量的时候不好处理,这时候我们需要借助数据库来操作。虽然可以通过Excel中的函数、自动筛选或者数据透视的功能实现一部分功能,但是要做到如Access这种强大的统计功能还是比较困难的。
1、单击“开始”→”所有程序“→”Microsoft Office“→”Microsoft Access “,打开Microsoft Access 软件
2、在打开的Microsoft Access 软件中点击“新建”
3、选择在界面的右边出现了新建对话框,选择空数据库。
4、选择一个存放该文件的位置。
5、完成
备注:以上是新建的操作,如果手头上有数据的话可以操作不变,导入即可
- ?
EXCEL玩转数据库,8种技巧,几十种功能,终于被整合一起了
邵二娘
展开
前言:
在职场报表中,EXCEL的魔法,可以说无处不在,是一项每个人必须掌握的技能,但是在EXCEL所有的函数之中,有一种函数,称之为【数据库函数】,高效,运行速度快,专门为大数据提供,却很少为人知
收藏+转发,传播知识,是一种美德
函数解释
数据库函数均有三个相同的参数:database、field 和 criteria。这些参数指向数据库函数所使用的工作表区域。其中参数 database 为工作表上包含数据清单的区域。参数 field 为需要汇总的列的标志。参数 criteria 为工作表上包含指定条件的区域。写法为=(database、field,criteria)
本篇主要介绍DGET、dcount、daverage、dmax、dmin 5个函数,套路完全一致。
特别提醒
这是一个让人又爱又恨的函数,爱,是因为这个函数,处理数据高效,快速。
恨,是因为如果不知道原理,会出大问题的
经典应用:
用法1:以关键词开头的处理
当我们在第三个参数,如实例,输入A的时候, 实际上,计算的是以A开头的所有物料的库存DSUM函数,计算以A开头的所有库存的和dcount函数,计算以A开头的物料的个数dmax函数,计算以A开头的物料的库存的最大值dmin函数,计算以A开头的物料的库存的最小daverage函数,计算以A开头的物料的库存的平均值特别提醒,是以A开头,不是单元格值等于A!!!!在第二个参数,我们这里输入的是2,是因为返回的值,在条件区域的第二列,当然我们可以直接输入B2,就是列号也是可以的用法2:不以A为结尾,的符合条件的值,主要为中间,或是首字母为A,如果末尾为A,只要中间有A这个字符,也是符合条件的
用法3:包含A的所有符合条件的个数
用法4:和用法3一样,为包含A的符合条件的个数
用法5:第二个字符为A的符合条件的个数,且字符长度大于等于3,因为一个问号,代表一个字符
用法6:以B开头的符合条件的值,因为没有,所以都为0
用法7:
这里输入的是,先切换到英文,而后输入单引号',而后输入=A,意思是单元格值完全等于A的符合条件的个数,所以只有一个单元格
用法8:
第二个字符为A,并且长度等于3的符合条件的值的处理
数据库函数,使用方法,就介绍完了.
- ?
怎样用excel做简单的数据库?
青词
展开
点击“外部数据”页,选择“EXCEL”
在弹出的获取外部数据向导中点击”浏览“
在弹出来的浏览窗口找到EXCEL表格所存放的位置选中后点击”打开“
如无特殊数据或要求保留标题直接在后边点击完成,否则点击“下一步”根据提示修改需要的数据类型、保存标题等操作。完成后在左边可以看到数据表名,双击可以正常在ACCESS进行正常操作。
(本文内容由百度知道网友一梦中贡献)
- ?
用数据库和用Excel的区别?
Quirita
展开
首先,我们先来说说数据库是什么?官方说法就是:按照数据结构来组织,存储和管理数据的仓库。数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。比如数据分析,数据整合等等。但是,数据库的使用成本太高,这就像每个人都是程序员一样,所以我在这里说的,是适合所有小白使用的数据库的应用软件。
Excel表格大家的熟悉程度可就非同一般了,我们几乎每天都在与Excel表格为伍,公司的财务报表,人力资源的信息,行政的考勤记录等等都是用Excel记录的,那么,在数据膨胀化的时代,Excel还能满足我们的需求吗?答案就可见一斑了~
首先,我觉得数据库的安全性要比Excel强很多,起码在我编辑到一半数据的时候,即使没有来得及保存,数据库的数据也是不会丢失的,他会永远存在于数据库里,已备我不时之需。但是这一点Excel是做不到的,我想大家都经历过数据录入一半的时候,电脑突然出现故障导致所有数据丢失的事件,当时的懊恼和无助,你可还记忆犹新??
其次,数据库的数据是可以在线共享的,这种共享是多人可以同时操作一个表格并且数据之间是不会有所干扰的,在此基础上,和你共同协作的人也可以看见你创建的数据,当然这是在你允许的情况下。而Excel的分享只能是不断的通过媒介(比如微信,QQ,邮件)来不断的转发给需要的人,当然转发的同时它已经失去了时效性。而数据最可怕的就是失去时效性。
再有,数据库的数据分析能力远远超过Excel表格,不只是在于他的图表分析,而且有强大的BI功能做数据的大集合,你可以任意将你需要的表格里任意字段提取出来作为你聚合表里的一部分,你甚至可以将不是同一个表格里的数据做任何的运算,这不就是管理层梦寐以求的数据统计报表吗?你还需要在不同的表格里花费大量的时间一点一点计算那可怜的数据吗?
以后所有的数据都将平台化,这是数据时代的大趋势,看看你是在掌握数据还是数据掌握你,就只差一个数据库了~
如何用excel建立数据库
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并