【分享成果 , 随喜正能量】多赚点钱,可以解决人生大部分问题 。赚钱的能力像其他能力一样 , 是可以不断学习、练习、提升的 。薪水不够的话,试试兼职、副业 。拿你有的,换你要的 。这个世界一直如此,很残酷,也很公平 。从来没有一劳永逸的选择 。关键是选择之后 , 你该做些什么 。??
《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订了 。这套教程定位于中级,是学完字典后的另一个专题讲解 。数据库是数据处理的利器 , 教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试 。
这套教程共两册,八十四讲 , 今后一段时间会给大家陆续推出修订后的教程内容 。今日的内容是第36讲:ADO连接EXCEL实现数据汇总

第三十六讲 利用ADO连接EXCEL,实现数据的复杂计算
大家好,今日我们继续VBA数据库解决方案的学习,最近的讲解是ADO与EXCEL的连接 , 从而实现许多方便快捷的操作,这里的EXCEL是作为数据库应用的 , 在本书数据库的讲解中,连接详细讲解的就只有accdb数据库和excel数据库了,两者各有不同,对于EXCEL而言是非常大众化的数据处理软件,利用的非常广泛,而accdb数据库是一个专门的数据库 。两个可以相互的取长补短,比如excel数据库我在讲解的时候,尽可能的不去执行实际打开的操作,只是提取数据的处理 。这样可以发挥EXCEL的优点,而避开文件容易改动的缺点 。1 应用场景的具体分析
【ADO连接EXCEL实现数据汇总】今日讲解的是如何利用ADO完成相对复杂的数据运算 , 我们先看下面的EXCEL数据:
这时几种药品在1到6月份的销售情况,记录在15年.xlsx的工作表sheet3中 , 我们要提出数据,但我们关心的不是每月的销售情况 , 而关心的是每月销售的增加情况,和每种药品在上半年的销售总额是多少,我们要把每月销售的增减和半年的销售总额汇总出来 , 而不打开文件,这个程序用ADO连接该怎么写呢?
2 ADO实现EXCEL工作表数据计算的代码及代码解读
看下面的代码:Sub mynz_36()
'第36讲,利用ADO,实现EXCEL工作表数据的复杂计算
【代码见教程】
End Sub
代码截图;

代码讲解:
1) strTable = "[sheet3$a2:G9]" 这里设定了数据库的取值范围是A2:G9的单元格
2) strSQL = "select F1,F3-F2,F4-F3,F5-F4,F6-F5,F7-F6,F2 F3 F4 F5 F6 F7 from " & strTable 在这句中,就SQL语句我们分别定义了几个列的值分别来自上述的数据范围 , 这几个列的值是F1: 数据源工作表的第一列;F3-F2: 数据源工作表的第3列减去第2列;F4-F3: 数据源工作表的第4列减去第3列;F5-F4, 数据源工作表的第5列减去第4列;等等,最后的一列是F2 F3 F4 F5 F6 F7,是数据源工作表的6列数值相加 。
3) Range("a1:g1") = Array("药品名", "2月-1月", "3月-2月", "4月-3月", "5月-4月", "6月-5月", "半年合计") 这句是把上述数据提取出来后要再安上列的标题 。
下面看我们的运行情况:
最后的运行结果:

大家要清楚,为什么要引入ADO来操作数据库和EXCEL呢?操作速度是非常快的 。
今日内容回向:
1 如何利用ADO 实现多数据的复杂计算?
2 上述代码是否真的清楚了呢?
本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

【分享成果,随喜正能量】不要去要求别人理解你、共情你、尊重你 。这是弱者的思维 。强者不会这样做 。所谓强者,就是能承受更多压力,能接受更多不公,能忍受更多委屈 。不怕被利用,就怕你没用 。多表达,少争论,别站队 。。
