ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何在VBA中运用ADO+SQL并使用TRANSFORM方式将数据行列转换进行统计

如何在VBA中运用ADO+SQL并使用TRANSFORM方式将数据行列转换进行统计

作者:绿色风 分类: 时间:2022-08-18 浏览:87
楼主
xmyjk
Q:如何将下表:

 

以下图方式进行统计和汇总,类似列转行的统计方式:

 

A:SQL核心语句:
  1. TRANSFORM FIRST(答案) SELECT 用户id, 部门id FROM [原始数据$] GROUP BY 用户id, 部门id PIVOT 问题 IN ("第一个问题","第二个问题","第三个问题","第四个问题","第五个问题","第六个问题","第七个问题","第八个问题","第九个问题","第十个问题","第十一个问题")
程序语句:
  1. Option Explicit
  2. Sub test()
  3. Dim cnn As Object, sql As String

  4. Application.ScreenUpdating = False
  5. Range("a2", "m" & [a65536].End(3).Row +2).Clear
  6. Set cnn = CreateObject("ADODB.Connection")
  7. cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName

  8. sql = "TRANSFORM FIRST(答案) SELECT 用户id, 部门id FROM [原始数据$] GROUP BY 用户id, 部门id PIVOT 问题 IN (""第一个问题"",""第二个问题"",""第三个问题"",""第四个问题"",""第五个问题"",""第六个问题"",""第七个问题"",""第八个问题"",""第九个问题"",""第十个问题"",""第十一个问题"")"

  9. [a3].CopyFromRecordset cnn.Execute(sql)

  10. cnn.Close: Set cnn = Nothing

  11. [a1].CurrentRegion.Borders.LineStyle = 1
  12. Application.ScreenUpdating = True

  13. MsgBox "Ok"
  14. End Sub

行列转换.rar
2楼
bishunbiao
学习,挺高深的。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap