laoau138 发表于 2017-2-8 17:17

用VBA数组分别计算每班总分平均分,输出到F:I列

用VBA数组分别计算每班总分平均分,输出到F:I列

glloin 发表于 2017-2-8 19:07

Public Sub asd()
    'i,k,m,
    Dim i As Integer
    Dim k As Integer
    Dim m As Integer
    Dim arr As Variant
    Dim ar As Variant
    With ThisWorkbook.Sheets("sheet1")
      arr = .Range("A2:D" & .Cells(Rows.Count, 1).End(xlUp).Row)
    End With
    ReDim ar(1 To 4, 1 To 1)
    For i = 1 To UBound(arr)
      For k = 1 To UBound(ar, 2)
            If i = 1 Then m = 1: ar(1, 1) = arr(1, 1)
            If ar(1, k) = arr(i, 1) Then
                ar(2, k) = ar(2, k) + 1
                ar(3, k) = ar(3, k) + arr(i, 4)
                ar(4, k) = ar(3, k) / ar(2, k)
                Exit For
            ElseIf k = UBound(ar, 2) Then
                m = m + 1
                ReDim Preserve ar(1 To 4, 1 To m)
                ar(1, m) = arr(i, 1)
                ar(2, m) = ar(2, m) + 1
                ar(3, m) = ar(3, m) + arr(i, 4)
                ar(4, m) = ar(3, m) / ar(2, m)
            End If
      Next
    Next
    .Resize(UBound(ar, 2), UBound(ar)) = WorksheetFunction.Transpose(ar)
    Erase ar
    Erase arr
    i = 0
    k = 0
    m = 0
End Sub

页: [1]
查看完整版本: 用VBA数组分别计算每班总分平均分,输出到F:I列