|
与填没填数字无关,但找到一个问题,改了下代码:
- Sub suab()
- Application.ScreenUpdating = False
- With Sheets("复制取数汇总表")
- rw = .Cells(Rows.Count, 1).End(3).Row
- ar1 = .Range("A4:D" & rw)
- Set gf = .Rows("2:3").Find("合计工分")
- If gf Is Nothing Then Exit Sub
- ar2 = gf.Offset(1, 0).Resize(rw - 3, 1)
- End With
- Set d1 = CreateObject("Scripting.Dictionary")
- Set d2 = CreateObject("Scripting.Dictionary")
- For i = 1 To UBound(ar1)
- x = ar1(i, 1) & ":" & ar1(i, 3) & ":" & ar1(i, 4)
- d1(x) = d1(x) + ar2(i, 1)
- d2(ar1(i, 3) & ":" & ar1(i, 4)) = d2(ar1(i, 3) & ":" & ar1(i, 4)) + ar2(i, 1)
- Next
- s1 = d1.keys
- s2 = d2.keys
- s3 = s1
- ReDim dhhz(1 To UBound(s1) * 2 + 2, 1 To 4)
- ReDim ryhz(1 To UBound(s2) + 1, 1 To 4)
- C = a
- For i = 0 To UBound(s1)
- If d1(s1(i)) <> 0 Then
- x = Split(s1(i), ":")(1) & ":" & Split(s1(i), ":")(2)
- For j = 0 To UBound(s3)
-
- If InStr(s3(j), x) Then
- a = a + 1
- dhhz(a, 1) = Split(s3(j), ":")(0)
- dhhz(a, 2) = Split(s3(j), ":")(1)
- dhhz(a, 3) = Split(s3(j), ":")(2)
- dhhz(a, 4) = d1(s3(j))
- s3(j) = 0
- End If
- Next
- If a > C Then
- a = a + 1
- dhhz(a, 1) = "合计": dhhz(a, 4) = d2(x)
- C = a
- End If
- End If
- Next
- With Sheets("按单号汇总")
- rw = .Cells(Rows.Count, 1).End(3).Row
- If rw > 3 Then .Rows("4:" & rw).Delete
- .Range("A4").Resize(a, 4) = dhhz
- .Range("A4:D" & a + 3).Borders.LineStyle = 1
- m = 4
- Do While .Cells(m, 1) <> ""
- If .Cells(m, 1) = "合计" Then
- .Range(.Cells(m, 1), .Cells(m, 4)).Font.ColorIndex = 3
- .Range(.Cells(m, 1), .Cells(m, 4)).Font.Bold = True
- End If
- m = m + 1
- Loop
- End With
- For i = 0 To UBound(s2)
- If d2(s2(i)) <> 0 Then
- b = b + 1
- ryhz(b, 1) = "合计"
- ryhz(b, 2) = Split(s2(i), ":")(0)
- ryhz(b, 3) = Split(s2(i), ":")(1)
- ryhz(b, 4) = d2(s2(i))
- End If
- Next
- With Sheets("按人员汇总")
- rw = .Cells(Rows.Count, 1).End(3).Row
- If rw > 3 Then .Rows("4:" & rw).Delete
- .Range("A4").Resize(b, 4) = ryhz
- .Range("A4:D" & b + 3).Borders.LineStyle = 1
- End With
- End Sub
复制代码 |
|