|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
- Sub test()
- Dim r%, i%
- Dim arr, brr
- Dim d As Object
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- hg = [{60,22,22,40,25,29,20,22.5}]
- lk = [{5.57,7.71,9,7.71,7.71,9,5.57,9,6.43,9,5.57,5.57}]
- Set d = CreateObject("scripting.dictionary")
- With Worksheets("成绩录入表")
- r = .Cells(.Rows.Count, 1).End(xlUp).Row
- arr = .Range("a3:p" & r)
- End With
- For i = 2 To UBound(arr)
- bj = Val(Split(arr(i, 3), "(")(1))
- If Not d.exists(bj) Then
- Set d(bj) = CreateObject("scripting.dictionary")
- End If
- For j = 7 To 13 Step 2
- km = Left(arr(1, j), 2)
- If Not d(bj).exists(km) Then
- m = 1
- ReDim brr(1 To 3, 1 To m)
- Else
- brr = d(bj)(km)
- m = UBound(brr, 2) + 1
- ReDim Preserve brr(1 To 3, 1 To m)
- End If
- brr(1, m) = m
- brr(2, m) = arr(i, 4)
- brr(3, m) = arr(i, j)
- d(bj)(km) = brr
- Next
- Next
- For Each aa In d.keys
- For Each bb In d(aa).keys
- brr = d(aa)(bb)
- ReDim crr(1 To UBound(brr, 2), 1 To UBound(brr))
- For i = 1 To UBound(brr)
- For j = 1 To UBound(brr, 2)
- crr(j, i) = brr(i, j)
- Next
- Next
- ReDim drr(1 To 12)
- For i = 1 To UBound(crr)
- drr(1) = drr(1) + 1
- If Len(crr(i, 3)) <> 0 And IsNumeric(crr(i, 3)) Then
- drr(2) = drr(2) + 1
- drr(3) = drr(3) + crr(i, 3)
- If crr(i, 3) >= 80 Then
- drr(5) = drr(5) + 1
- End If
- If crr(i, 3) >= 60 Then
- drr(7) = drr(7) + 1
- Else
- drr(9) = drr(9) + 1
- End If
- If IsEmpty(drr(11)) Then
- drr(11) = crr(i, 3)
- Else
- If drr(11) < crr(i, 3) Then
- drr(11) = crr(i, 3)
- End If
- End If
- If IsEmpty(drr(12)) Then
- drr(12) = crr(i, 3)
- Else
- If drr(12) > crr(i, 3) Then
- drr(12) = crr(i, 3)
- End If
- End If
- End If
- Next
- If Len(drr(2)) <> 0 And drr(2) <> 0 Then
- drr(4) = Round(drr(3) / drr(2), 2)
- drr(6) = Round(drr(5) / drr(2), 4)
- drr(8) = Round(drr(7) / drr(2), 4)
- drr(10) = Round(drr(9) / drr(2), 4)
- End If
- wjm = aa & Left(bb, 1)
- On Error Resume Next
- Set ws = Worksheets(wjm)
- If Err Then
- Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count))
- ws.Name = wjm
- End If
- On Error GoTo 0
- With ws
- .Cells.Clear
- With .Range("a1")
- .Value = "海城镇第二小学五年级第一次月考知识测试" & vbLf & "质 量 分 析 表"
- .Resize(1, 12).Merge
- With .Font
- .Size = 18
- .Bold = True
- End With
- End With
- With .Range("a2")
- .Value = "(2018-2019学年度第一学期)"
- .Resize(1, 12).Merge
- End With
- .Range("a3") = "班级"
- .Range("b3") = aa
- .Range("e3") = "学科"
- .Range("f3") = bb
- With .Range("j3")
- .Value = #10/1/2018#
- .Resize(1, 3).Merge
- End With
- With .Range("a4")
- .Value = "应考" & vbLf & "人数"
- .Resize(2, 1).Merge
- End With
- With .Range("b4")
- .Value = "实考" & vbLf & "人数"
- .Resize(2, 1).Merge
- End With
- With .Range("c4")
- .Value = "总分"
- .Resize(2, 1).Merge
- End With
- With .Range("d4")
- .Value = "人平" & vbLf & "均分"
- .Resize(2, 1).Merge
- End With
- With .Range("e4")
- .Value = "红 分" & vbLf & "(80-100分)"
- .Resize(1, 2).Merge
- End With
- With .Range("g4")
- .Value = "及 格" & vbLf & "(60-100分)"
- .Resize(1, 2).Merge
- End With
- With .Range("i4")
- .Value = "不及格" & vbLf & "(0-59分)"
- .Resize(1, 2).Merge
- End With
- For j = 5 To 9 Step 2
- .Cells(5, j).Resize(1, 2) = Array("人数", "%")
- Next
- With .Range("k4")
- .Value = "最" & vbLf & "高" & vbLf & "分"
- .Resize(2, 1).Merge
- End With
- With .Range("l4")
- .Value = "最" & vbLf & "低" & vbLf & "分"
- .Resize(2, 1).Merge
- End With
-
- .Range("a6").Resize(1, 12) = drr
- With .Range("a7")
- .Value = "学生姓名及分数"
- .Resize(1, 12).Merge
- End With
- For j = 1 To 10 Step 3
- .Cells(8, j).Resize(1, 3) = Array("序号", "姓名", "分数")
- Next
- m = 9
- n = 1
- For i = 1 To UBound(crr)
- .Cells(m, n) = crr(i, 1)
- .Cells(m, n + 1) = crr(i, 2)
- .Cells(m, n + 2) = crr(i, 3)
- m = m + 1
- If m > 33 Then
- m = 9
- n = n + 3
- End If
- Next
- With .Range("a2:l33")
- With .Font
- .Name = "微软雅黑"
- .Size = 11
- End With
- End With
- .Range("f6,h6,j6").NumberFormatLocal = "0.00%"
- For i = 1 To 7
- .Rows(i).RowHeight = hg(i)
- Next
- .Rows("8:33").RowHeight = hg(8)
- For j = 1 To UBound(lk)
- .Columns(j).ColumnWidth = lk(j)
- Next
- With .Range("a4:l33")
- .Borders.LineStyle = xlContinuous
- End With
- With .UsedRange
- .HorizontalAlignment = xlCenter
- .VerticalAlignment = xlCenter
- End With
- End With
- Next
- Next
- End Sub
复制代码 |
评分
-
3
查看全部评分
-
|