AIOps 一场颠覆传统运维的盛筵
940
2022-10-29
VBA与数据库——简化程序编写-一维表转二维表
在一维表转二维表里介绍了使用字典来转换表格的方法,可以看到使用字典的方法代码量还是有一点多的,有点复杂。
让我们看看使用ADO怎么来实现这个功能:
Sub ADOTransformData() Dim AdoConn As Object Set AdoConn = VBA.CreateObject("ADODB.Connection") '打开数据库 AdoConn.Open "Provider =Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";" Dim rst As Object Set rst = VBA.CreateObject("ADODB.Recordset") Set rst = AdoConn.Execute("transform sum(数据) select 项目 from [Sheet1$A1:C21] group by 项目 pivot 姓名", , 1) '输出标题 Dim i As Long For i = 0 To rst.Fields.Count - 1 Range("E1").Offset(0, i).Value = rst.Fields(i).name Next '输出数据 Range("E2").CopyFromRecordset rst rst.Close AdoConn.Close Set rst = Nothing Set AdoConn = NothingEnd Sub
代码和前面的汇总数据、查找数据一样,仅仅是修改了sql语句,其中8-15行ADODB.Recordset是为了输出标题才使用。
这个代码使用很简单,但是需要注意的是transform 这个语句不是所有的数据库驱动程序都能够支持的,像SQLite数据库就不能够支持。
发表评论
暂时没有评论,来抢沙发吧~