试试看行不: Sub test() Dim arr1(), arr2(1 To 30, 1 To 22) Dim i1%, I2%, I3% With Sheets("数据") arr1 = .Range("a2:g" & .[a65536].End(xlUp).Row).Value End With For i1 = 1 To UBound(arr1) If arr1(i1, 7) <= 30 Then I2 = 1 ElseIf arr1(i1, 7) <= 70 Then I2 = 5 ElseIf arr1(i1, 7) <= 100 Then I2 = 9 Else I2 = 13 End If If arr1(i1, 1) = "1#" Then arr2(Day(arr1(i1, 3)), I2) = arr2(Day(arr1(i1, 3)), I2) + arr1(i1, 7) If arr2(Day(arr1(i1, 3)), 17) < arr1(i1, 7) Then arr2(Day(arr1(i1, 3)), 17) = arr1(i1, 7) If arr2(Day(arr1(i1, 3)), 20) = 0 Or arr2(Day(arr1(i1, 3)), 20) > arr1(i1, 7) Then arr2(Day(arr1(i1, 3)), 20) = arr1(i1, 7) ElseIf arr1(i1, 1) = "5#" Then arr2(Day(arr1(i1, 3)), I2 + 1) = arr2(Day(arr1(i1, 3)), I2 + 1) + arr1(i1, 7) If arr2(Day(arr1(i1, 3)), 18) < arr1(i1, 7) Then arr2(Day(arr1(i1, 3)), 18) = arr1(i1, 7) If arr2(Day(arr1(i1, 3)), 21) = 0 Or arr2(Day(arr1(i1, 3)), 21) > arr1(i1, 7) Then arr2(Day(arr1(i1, 3)), 21) = arr1(i1, 7) Else arr2(Day(arr1(i1, 3)), I2 + 2) = arr2(Day(arr1(i1, 3)), I2 + 2) + arr1(i1, 7) If arr2(Day(arr1(i1, 3)), 19) < arr1(i1, 7) Then arr2(Day(arr1(i1, 3)), 19) = arr1(i1, 7) If arr2(Day(arr1(i1, 3)), 22) = 0 Or arr2(Day(arr1(i1, 3)), 22) > arr1(i1, 7) Then arr2(Day(arr1(i1, 3)), 22) = arr1(i1, 7) End If arr2(Day(arr1(i1, 3)), I2 + 3) = arr2(Day(arr1(i1, 3)), I2 + 3) + arr1(i1, 7) Next With Sheets("统计") .[b4].Resize(30, 22) = arr2 End With End Sub |