|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
- Sub test()
- Dim r%, i%
- Dim arr, brr
- Dim d(1 To 3) As Object
- Dim shnam
- shnam = [{"全部名单","已填报","未填报"}]
- For i = 1 To 3
- Set d(i) = CreateObject("scripting.dictionary")
- Next
- Set dcs = CreateObject("scripting.dictionary")
- With Worksheets("班主任")
- r = .Cells(.Rows.Count, 1).End(xlUp).Row
- arr = .Range("a1:b" & r)
- For i = 1 To UBound(arr)
- xm = Format(arr(i, 1), "00")
- dcs(xm) = arr(i, 2)
- Next
- End With
- With Worksheets("原始表")
- r = .Cells(.Rows.Count, 1).End(xlUp).Row
- arr = .Range("a3:e" & r)
- For i = 1 To UBound(arr)
- bj = Mid(arr(i, 3), 4, 2)
- If dcs.exists(bj) Then
- bzr = dcs(bj)
- Else
- bzr = ""
- End If
- If Not d(1).exists(bj) Then
- m = 4
- ReDim brr(1 To m)
- brr(1) = bj
- brr(2) = bzr
- brr(3) = Array(0, 0)
- Else
- brr = d(1)(bj)
- m = UBound(brr) + 1
- ReDim Preserve brr(1 To m)
- End If
- If arr(i, 1) = "已填报" Then
- brr(3)(0) = brr(3)(0) + 1
- brr(m) = arr(i, 5)
- Else
- brr(3)(1) = brr(3)(1) + 1
- brr(m) = arr(i, 5) & "×"
- End If
- d(1)(bj) = brr
- Next
- End With
- For Each aa In d(1).keys
- brr = d(1)(aa)
- ReDim crr(1 To UBound(brr))
- ReDim drr(1 To UBound(brr))
- For i = 1 To 2
- crr(i) = brr(i)
- drr(i) = brr(i)
- Next
- m = 3
- n = 3
- For i = 4 To UBound(brr)
- If Right(brr(i), 1) <> "×" Then
- m = m + 1
- crr(m) = brr(i)
- crr(3) = crr(3) + 1
- Else
- n = n + 1
- drr(n) = Left(brr(i), Len(brr(i)) - 1)
- drr(3) = drr(3) + 1
- End If
- Next
- d(2)(aa) = crr
- d(3)(aa) = drr
- Next
- For q = 1 To 3
- With Worksheets(shnam(q))
- .UsedRange.Offset(1, 0).Clear
- .Range("a2") = "班级"
- .Range("a3") = "班主任"
- n = 2
- For k = 1 To 15
- xm = Format(k, "00")
- If d(q).exists(xm) Then
- brr = d(q)(xm)
- If q = 1 Then
- brr(3) = brr(3)(0) + brr(3)(1) & "=" & brr(3)(0) & "+" & brr(3)(1)
- End If
- crr = Application.Transpose(brr)
- .Cells(2, n).Resize(UBound(crr), 1) = crr
- n = n + 1
- End If
- Next
- r = .UsedRange.Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
- c = .Cells(2, .Columns.Count).End(xlToLeft).Column
- For i = 4 To r
- .Cells(i, 1) = i - 3
- Next
- .Range("a2").Resize(r - 1, c).Borders.LineStyle = xlContinuous
- With .UsedRange
- With .Font
- .Size = 10
- End With
- .HorizontalAlignment = xlCenter
- .VerticalAlignment = xlCenter
- End With
- End With
- Next
- End Sub
复制代码 |
|