|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
- Sub test2()
- Dim r%, i%
- Dim arr, brr
- Dim d As Object
- Set d = CreateObject("scripting.dictionary")
- Set d1 = CreateObject("scripting.dictionary")
- Set djs = CreateObject("scripting.dictionary")
- With Worksheets("班级和科任教师参数设置")
- r = .Cells(.Rows.Count, 1).End(xlUp).Row
- c = .Cells(1, .Columns.Count).End(xlToLeft).Column
- arr = .Range("a1").Resize(r, c)
- For i = 2 To UBound(arr)
- Set djs(arr(i, 1)) = CreateObject("scripting.dictionary")
- For j = 2 To UBound(arr, 2)
- djs(arr(i, 1))(arr(1, j)) = arr(i, j)
- Next
- Next
- For j = 2 To UBound(arr, 2)
- d1(arr(1, j)) = j - 1
- Next
- End With
- With Worksheets("成绩登分总表")
- r = .Cells(.Rows.Count, 1).End(xlUp).Row
- c = .Cells(1, .Columns.Count).End(xlToLeft).Column
- arr = .Range("a1").Resize(r, c)
- End With
- For i = 2 To UBound(arr)
- bj = Left(arr(i, 2), 2)
- For j = 4 To UBound(arr, 2)
- If d1.exists(arr(1, j)) Then
- n = d1(arr(1, j)) * 3 - 1
- If Not d.exists(bj) Then
- ReDim brr(1 To 1 + d1.Count * 3)
- brr(1) = Application.Text(Left(bj, 1), "[DBNum1]") & "(" & Mid(bj, 2, 1) & ")班"
- Else
- brr = d(bj)
- End If
- brr(n + 1) = brr(n + 1) + arr(i, j)
- brr(n + 2) = brr(n + 2) + 1
- d(bj) = brr
- End If
- Next
- Next
- brr = Application.Transpose(Application.Transpose(d.items))
- ReDim crr(1 To UBound(brr, 2))
- crr(1) = "年级平均"
- For i = 1 To UBound(brr)
- For j = 3 To UBound(brr, 2) Step 3
- crr(j) = crr(j) + brr(i, j)
- crr(j + 1) = crr(j + 1) + brr(i, j + 1)
- Next
- If djs.exists(brr(i, 1)) Then
- For Each aa In d1.keys
- n = d1(aa) * 3 - 1
- If djs(brr(i, 1)).exists(aa) Then
- brr(i, n) = djs(brr(i, 1))(aa)
- End If
- Next
- End If
- Next
- For j = 3 To UBound(brr, 2) Step 3
- If Len(crr(j + 1)) <> 0 And crr(j + 1) <> 0 Then
- crr(j) = Round(crr(j) / crr(j + 1), 2)
- End If
- For i = 1 To UBound(brr)
- If Len(brr(i, j + 1)) <> 0 And brr(i, j + 1) <> 0 Then
- brr(i, j) = Round(brr(i, j) / brr(i, j + 1), 2)
- End If
- brr(i, j + 1) = brr(i, j) - crr(j)
- Next
- Next
- For i = 1 To UBound(brr)
- For j = 1 To UBound(brr, 2)
- If brr(i, j) = 0 Then
- brr(i, j) = ""
- End If
- Next
- Next
- For j = 1 To UBound(crr)
- If crr(j) = 0 Then
- crr(j) = ""
- End If
- Next
- For j = 4 To UBound(crr) Step 3
- crr(j) = ""
- Next
- With Worksheets("sheet1")
- .Cells.Clear
- .Range("a1") = "班级"
- For Each aa In d1.keys
- n = d1(aa) * 3 - 1
- .Cells(1, n) = aa
- .Cells(1, n + 1).Resize(1, 2) = Array("平均分", "分差")
- Next
- .Range("a2").Resize(UBound(brr), UBound(brr, 2)) = brr
- .Cells(UBound(brr) + 2, 1).Resize(1, UBound(crr)) = crr
- r = UBound(brr) + 2
- c = .Cells(1, .Columns.Count).End(xlToLeft).Column
- .Range("a1").Resize(r, c).Borders.LineStyle = xlContinuous
- With .UsedRange
- .HorizontalAlignment = xlCenter
- .VerticalAlignment = xlCenter
- End With
- End With
- End Sub
复制代码 |
评分
-
2
查看全部评分
-
|