导航菜单

利用ADO连接EXCEL,并实现数据的复杂计算

大家好,今天我们继续学习VBA和数据库,最近的解释是ADO和EXCEL之间的连接,从而实现了许多方便快捷的操作,这里EXCEL用作数据库应用程序,在书籍数据库的说明中,连接详细解释。唯一的accdb数据库和excel数据库,两者是不同的,对于EXCEL来说是一种非常流行的数据处理软件,使用非常广泛,而accdb数据库是一个专门的数据库。两个可以相互补充的优势,比如excel数据库,当我解释时,尽量不执行实际的开放操作,只需提取数据处理。这可以利用EXCEL并避免轻松更改文件的缺点。

今天的解释是如何使用ADO来完成相对复杂的数据操作。让我们看看以下EXCEL数据:

09bf48f3d8da4eedb901fe2a87507525

此时,1月至6月的几种药物销售记录在15年xxx工作表的表3中。我们必须提供数据,但我们并不关心月度销售情况,而是关注月度销售情况。增加情况,以及上半年每种药物的总销售额,我们要增加月度销售额增加和减少以及总销售额半年,无需打开文件,如何用ADO编写此程序连接?

请看下面的代码:

Sub mynzexcels_5()

'第36章,使用ADO实现EXCEL工作表数据的复杂计算

Dim cnADO,rsADO,Z As Object

Dim strPath,strTable,strSQL As String

设置cnADO=CreateObject('ADODB.Connection')

strPath=ThisWorkbook.Path& '\'& '15 years.xlsx'

strTable='[sheet3 $ a2: G9]'

'建立连接,提取数据

cnADO.Open'provider=Microsoft.ACE.OLEDB.12.0; extended properties='excel 8.0; hdr=no; imex=1'; data source='& strPath的

strSQL='从'&选择F1,F3-F2,F4-F3,F5-F4,F6-F5,F7-F6,F2 + F3 + F4 + F5 + F6 + F7。 strTable

设置Z=cnADO.Execute(strSQL)

范围('a: g')。ClearContents

范围('a1: g1')=数组('药名','二月-1个月','三月二月','四月 - 三月','五?滤脑?','六月五月','一半' - 年总数')

[a2] .CopyFromRecordset Z

cnADO.Close

设置cnADO=Nothing

结束子

代码截图;

9ebb62aebb354ba49c6aa17a34cf3868

代码讲解:

1 strTable='[sheet3 $ a2: G9]'这里设定了数据库的取值范围是A2: G9的单元格

2 strSQL='从'&选择F1,F3-F2,F4-F3,F5-F4,F6-F5,F7-F6,F2 + F3 + F4 + F5 + F6 + F7。 strTable在这句中,就是SQL语句我们分别定义了几个列的值分别来自上述的数据范围,这几个列的值是F1:数据源工作表的第一列; F3-F2:数据源工作表的第3列减去第2列; F4-F3:数据源工作表的第4列减去第3列; F5-F4,数据源工作表的第5列减去第4列;等等,最后的一列是F2 + F3 + F4 + F5 + F6 + F7,是数据源工作表的6列数值相加。

3范围('a1: g1')=数组('药品名','2月 - 1月','3月 - 2月','4月 - 3月','5月 - 4月',' 6月 - 5月','半年合计')这句是把上述数据提取出来后要再安上列的标题。

下面看我们的运行情况:

6f06a1c61c664f3e82da4c6a128cb1ef

最后的运行结果:

f115c97551c34b30a8b3906f7df1669e

大家要清楚,为什么要引入ADO来操作数据库和EXCEL呢?操作速度是非常快的。

今日内容回向:

1如何利用ADO实现多数据的复杂计算?

XX

2上面的代码真的很清楚吗?