Excel VBA利用Transform函数+SQL交叉汇总数据
2016-10-26 19:59
51 查看
一、VBA中transform函数基本语法:
二、我们有”sales”表,交叉汇总到”汇总”表,两表在同一工作簿中
三、Excel VBA实现代码如下:
Creates a crosstab query. Syntax TRANSFORM aggfunction selectstatement PIVOT pivotfield [IN (value1[, value2[, ...]])] The TRANSFORM statement has these parts:
二、我们有”sales”表,交叉汇总到”汇总”表,两表在同一工作簿中
部门 员工 月份 销售额 部门 员工 1月 2月 3月 4月 销售1部 张三 1月 9000 销售1部 张三 9000 4800 7800 6900 销售1部 张三 2月 4800 销售1部 李四 4000 4800 7800 8000 销售1部 张三 3月 7800 销售2部 小米 8000 4580 8570 4000 销售1部 张三 4月 6900 销售2部 苹果 4800 7800 8000 4870 销售1部 李四 1月 4000 销售1部 李四 2月 4800 汇总表 销售1部 李四 3月 7800 销售1部 李四 4月 8000 销售2部 小米 1月 8000 销售2部 小米 2月 4580 销售2部 小米 3月 8570 销售2部 小米 4月 4000 销售2部 苹果 1月 4800 销售2部 苹果 2月 7800 销售2部 苹果 3月 8000 销售2部 苹果 4月 4870 sales表
三、Excel VBA实现代码如下:
Private Sub 交叉汇总() Dim cnn As Object, rst As Object, sql$, n As Byte Set cnn = CreateObject("adodb.connection") cnn.Open "dsn=excel files;dbq=" & ThisWorkbook.FullName Application.ScreenUpdating = False sql = "transform sum(销售额) select 部门,员工 from [sales$] group by 部门,员工 pivot 月份" Set rst = cnn.Execute(sql) With Worksheets("汇总") .[A1].CurrentRegion.ClearContents For n = 1 To rst.Fields.Count .Cells(1, n) = rst.Fields(n - 1).Name Next .[A2].CopyFromRecordset rst End With cnn.Close Set cnn = Nothing Set rst = Nothing Application.ScreenUpdating = True End Sub
相关文章推荐
- 利用存储过程实现交叉表格式数据查询的一种通用方法
- 利用SqlServer 作业完成数据汇总
- 利用itex操作从数据库导出大量数据-功能汇总(一)
- 利用存储过程实现交叉表格式数据查询的一种通用方法
- Python利用groupby模块进行Mysql分表数据的汇总统计
- 利用itext操作pdf从数据库导出大量数据--功能汇总(一)
- 利用 Python 进行数据分析(九)pandas 汇总统计和计算
- (原创)利用页面交叉引用反馈爬取vulners.com的数据
- 利用临时表汇总多表的数据
- 利用Python进行数据分析 中的问题与解决方案汇总
- 利用Python进行数据分析(9) pandas基础: 汇总统计和计算
- 利用arm开发板交叉编译opencv249错误汇总
- 利用数据建模时经常用到的交叉验证(Cross Validation)方法思想简介
- 利用Python进行数据分析 基础系列随笔汇总
- 利用oracle的with语句和动态sql,自动产生用交叉表格式显示的汇总语句
- 利用Excel VBA实现批量数据分组转置
- 利用Repeater控件显示主-从关系数据表
- (转)如何有效的利用数据字典进行查询