忘了贴代码,干脆工作表名称也修改了- Sub test()
- Dim ar, br, i&, j&, cp$, n&, lc, mt
- Sheets("高级筛选").Select
- Sheets("高级筛选").Range("a4:s" & Sheets("高级筛选").Range("a65536").End(3).Row).Sort key1:=[f4], key2:=[n4], header:=xlYes
- ar = Sheets("高级筛选").Range("a4:s" & Sheets("高级筛选").Range("a65536").End(3).Row)
- ReDim br(1 To UBound(ar), 1 To 10)
- ' n = 1: cp = ar(2, 6): lc = ar(2, 18)
- For i = 2 To UBound(ar)
- If ar(i, 6) <> cp Then
- n = n + 1: cp = ar(i, 6)
- br(n, 1) = cp
- br(n, 4) = 1: br(n, 5) = ar(i, 15): br(n, 6) = ar(i, 16)
- br(n, 2) = ar(i, 7): br(n, 3) = ar(i, 9)
- If n > 1 Then
- br(n - 1, 7) = br(n, 7) + ar(i - 1, 18) - lc
- If mt <> "" Then br(n - 1, 8) = ar(i - 1, 19) - mt
- If br(n - 1, 7) <> 0 Then br(n - 1, 9) = br(n - 1, 6) * 100 / br(n - 1, 7)
- If br(n - 1, 8) > 0 Then br(n - 1, 10) = br(n - 1, 6) / br(n - 1, 8)
- End If
- lc = ar(i, 18): mt = ar(i, 19)
- Else
- br(n, 4) = br(n, 4) + 1
- br(n, 5) = br(n, 5) + ar(i, 15)
- br(n, 6) = br(n, 6) + ar(i, 16)
- If i > 2 Then
- If ar(i, 18) < ar(i - 1, 18) Then
- br(n, 7) = br(n, 7) + ar(i - 1, 18) - lc: lc = 0
- End If
- End If
- End If
- Next
- br(n, 7) = br(n, 7) + ar(i - 1, 18) - lc
- If mt <> "" Then br(n, 8) = ar(i - 1, 19) - mt
- If br(n, 7) Then br(n, 9) = br(n, 6) * 100 / br(n, 7)
- If br(n, 8) > 0 Then br(n, 10) = br(n, 6) / br(n, 8)
- If Sheets("统计报表").Range("a65536").End(3).Row > 1 Then Sheets("统计报表").Range("a2:h" & Sheets("统计报表").Range("a65536").End(3).Row).ClearContents
- Sheets("统计报表").Range("a2").Resize(n, 8) = br
- Sheets("统计报表").Select
- End Sub
复制代码 |