ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何用VBA+ADO+SQL来进行百分位排名?

如何用VBA+ADO+SQL来进行百分位排名?

作者:绿色风 分类: 时间:2022-08-18 浏览:122
楼主
wise
Q:如何用VBA+ADO+SQL来进行百分位排名?
A:ALT+F11→插入模块→输入以下代码:

  1. Public Sub RunMacro()
  2.     For Each loWindow In Application.Windows
  3.         If LCase(loWindow.Caption) = "result.xls" Then
  4.             loWindow.Close (False)
  5.         End If
  6.     Next
  7.    
  8.     If Dir("c:\result.xls") <> "" Then
  9.         Kill "c:\result.xls"
  10.     End If
  11.    
  12.     ActiveWorkbook.Save
  13.    
  14.     Set loConnection = CreateObject("ADODB.Connection")
  15.     Set loRecordset = CreateObject("ADODB.Recordset")
  16.     loConnection.Open "Driver={Microsoft Excel Driver (*.xls)}; " & _
  17.                         "DBQ=" + ActiveWorkbook.FullName + ";" & _
  18.                         "ReadOnly=True"
  19.     loRecordset.Open _
  20.     "select * into [Excel 8.0;Database=c:\result.xls].[sheet1] " & _
  21.     "from ( select a.学生,(select count(*) from [score$] where 总分 < a.总分) / (select count(*)-1 from [score$]) * 100 as 百分比排位 from [score$] a) order by 百分比排位 desc", loConnection
  22.    
  23.     loConnection.Close
  24.     Workbooks.Open ("c:\result.xls")
  25.     ActiveWorkbook.ActiveSheet.UsedRange.Font.Name = "Tahoma"
  26.     ActiveWorkbook.ActiveSheet.UsedRange.Font.Size = 8
  27.     ActiveWorkbook.ActiveSheet.Columns("B:B").NumberFormatLocal = "0.00_ "
  28.     ActiveWorkbook.ActiveSheet.Cells.EntireRow.AutoFit
  29.     ActiveWorkbook.ActiveSheet.Cells.EntireColumn.AutoFit
  30. End Sub


计算百分比排位.rar
2楼
chury11
学习

免责声明

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

评论列表
sitemap