国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
vba處理excel數(shù)據(jù)(學(xué)生成績自動分班統(tǒng)計)
  1. Attribute VB_Name = "模塊1"
  2. Public classCount As Integer
  3. Public sheetName As String
  4. '作者 Xian云
  5. '日期 2018-5-3
  6. '程序非萬能,必要請手動
  7. '若工作表處于保護(hù)狀態(tài),則程序無法讀取并修改,請取消保護(hù)并保存,以使用此程序
  8. Sub 成績統(tǒng)計自動化()
  9. '以下兩行代碼為了提高運(yùn)算速度,暫時關(guān)閉掉屏幕上的效果顯示,計算結(jié)束后恢復(fù)
  10. Application.ScreenUpdating = False
  11. Application.Calculation = xlCalculationManual
  12. Dim sql As String
  13. Dim className As String
  14. sheetName = InputBox("請輸入要統(tǒng)計的表的名字(如sheet1)", "需要您的輸入")
  15. classCount = Val(InputBox("請輸入班級總數(shù)", "需要您的輸入"))
  16. ' sheetName = "1次月考總成績"
  17. ' classCount = 16
  18. Dim i As Integer
  19. For i = 1 To classCount
  20. className = i & "班"
  21. sql = "select * from [" + sheetName + "$] where 班級 = """ & className & """" + "order by 總分 desc"
  22. Call sqlExe(sql, className)
  23. scoreCalc (className)
  24. Next
  25. '恢復(fù)屏幕顯示,恢復(fù)計算
  26. Application.ScreenUpdating = True
  27. Application.Calculation = xlCalculationAutomatic
  28. Application.Calculate
  29. End Sub
  30. '統(tǒng)計指定表的成績并返回
  31. Function scoreCalc(table As String)
  32. '若考試科目增加或修改,只需要修改下面的數(shù)組中的科目信息,注意英文引號及逗號
  33. classNames = Array("語文", "數(shù)學(xué)", "英語", "思品", "歷史", "地理", "生物")
  34. Dim name As String
  35. Dim flg As Boolean
  36. Dim col As Integer, row As Integer, getIndex As Integer, Count As Integer
  37. Dim i As Integer, j As Integer
  38. col = ActiveWorkbook.Worksheets(table).UsedRange.Columns.Count
  39. row = ActiveWorkbook.Worksheets(table).UsedRange.Rows.Count
  40. flg = True
  41. Count = 0
  42. For i = 1 To col
  43. name = ActiveWorkbook.Worksheets(table).UsedRange.Cells(1, i)
  44. getIndex = -1
  45. '找到成績列
  46. For j = 0 To 6
  47. If classNames(j) = name Then
  48. getIndex = j
  49. Exit For
  50. End If
  51. Next j
  52. If getIndex <> -1 Then
  53. Call colWidth(i, 5)
  54. If flg Then
  55. Call setTitle(table, i, row, "平均分")
  56. Call setTitle(table, i, row + 1, "及格率")
  57. Call setTitle(table, i, row + 2, "優(yōu)秀率")
  58. flg = False
  59. End If
  60. Call setAvg(table, i, row)
  61. Call setPassing(table, i, row + 1)
  62. Call setExcellent(table, i, row + 2)
  63. Else
  64. If name = "班級" Then Call colWidth(i, 4.25)
  65. If name = "考號" Then Call colWidth(i, 11.5)
  66. If name = "序號" Then Call colWidth(i, 3.75)
  67. If name = "姓名" Then Call colWidth(i, 7.5)
  68. If name = "總分" Then Call colWidth(i, 4.13)
  69. If name = "校名次" Then Call colWidth(i, 6)
  70. End If
  71. Next i
  72. End Function
  73. '設(shè)置第i列的寬度
  74. Sub colWidth(ByVal i As Integer, ByVal width As Single)
  75. ColumnName = Chr(i + Asc("A") - 1)
  76. Columns(ColumnName & ":" & ColumnName).Select
  77. Selection.ColumnWidth = width
  78. End Sub
  79. Sub setTitle(table As String, ByVal i As String, row As Integer, ByVal title As String)
  80. c = Chr(i + Asc("A") - 2)
  81. Range(c & (row + 1)).Select
  82. Application.Worksheets(table).Range(c & (row + 1)).Clear
  83. Application.Worksheets(table).Range(c & (row + 1)).FormulaR1C1 = title
  84. End Sub
  85. '根據(jù)sql語句查詢,并將結(jié)果返回,sql語句的結(jié)果須為一個整型值
  86. Function setAvg(table As String, ByVal i As String, row As Integer) As Integer
  87. c = Chr(i + Asc("A") - 1)
  88. Range(c & (row + 1)).Select
  89. sss = "=AVERAGE(R[" & (1 - row) & "]C:R[-1]C)"
  90. ' ActiveCell.FormulaR1C1 = "=AVERAGE(R[-59]C:R[-1]C)"
  91. Application.Worksheets(table).Range(c & (row + 1)).Clear
  92. Application.Worksheets(table).Range(c & (row + 1)).FormulaR1C1 = sss
  93. Selection.NumberFormatLocal = "0.00_ "
  94. End Function
  95. '計算及格率并填入表格
  96. Function setPassing(table As String, ByVal i As String, row As Integer) As Integer
  97. c = Chr(i + Asc("A") - 1)
  98. Range(c & (row + 1)).Select
  99. sss = "=COUNTIF(R[" & (1 - row) & "]C:R[-2]C,"">=60"")/COUNT(R[" & (1 - row) & "]C:R[-2]C)"
  100. Application.Worksheets(table).Range(c & (row + 1)).Clear
  101. Selection.NumberFormatLocal = "0.000_ "
  102. Application.Worksheets(table).Range(c & (row + 1)).FormulaR1C1 = sss
  103. End Function
  104. '
  105. '計算優(yōu)秀率并填入表格
  106. Function setExcellent(table As String, ByVal i As String, row As Integer) As Integer
  107. c = Chr(i + Asc("A") - 1)
  108. Range(c & (row + 1)).Select
  109. sss = "=COUNTIF(R[" & (1 - row) & "]C:R[-3]C,"">=80"")/COUNT(R[" & (1 - row) & "]C:R[-3]C)"
  110. ' ActiveCell.FormulaR1C1 = "=AVERAGE(R[-59]C:R[-1]C)"
  111. Application.Worksheets(table).Range(c & (row + 1)).Clear
  112. Selection.NumberFormatLocal = "0.000_ "
  113. Application.Worksheets(table).Range(c & (row + 1)).FormulaR1C1 = sss
  114. End Function
  115. '完成查詢功能并新建工作表保存,sql為查詢語句
  116. Sub sqlExe(sql As String, table As String)
  117. Dim cnn As Object, rs As Object
  118. Set cnn = CreateObject("adodb.connection") '創(chuàng)建數(shù)據(jù)庫連接
  119. cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ActiveWorkbook.FullName
  120. Set rs = CreateObject("adodb.recordset") '創(chuàng)建一個數(shù)據(jù)集
  121. Set rs = cnn.Execute(sql) '執(zhí)行查詢
  122. Sheets.Add.name = table
  123. ActiveWorkbook.Worksheets(table).Cells.ClearContents
  124. Dim i As Integer
  125. For i = 1 To rs.Fields.Count - 1
  126. ActiveWorkbook.Worksheets(table).Cells(1, i) = rs.Fields(i - 1).name '填寫標(biāo)題到指定表
  127. Next
  128. ActiveWorkbook.Worksheets(table).Range("a2").CopyFromRecordset rs '復(fù)制記錄集到指定表
  129. rs.Close
  130. Set rs = Nothing
  131. cnn.Close
  132. Set cnn = Nothing
  133. End Sub
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
誰知道怎么調(diào)用EXCEL做報表?
Excel VBA開發(fā)自動發(fā)送郵件
VB打開EXCEL的方法
Excel 如何使用VBA實現(xiàn)
EXCEL模糊參照列表框運(yùn)用
Excel常用宏技巧
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服