Sub macro1()
Dim lastRow As Long, lastRow2 As Long, myArray() As Variant, longNum As Long
Dim total As Long, rowNumb As Long, tallyCount As Long
'**************************************************************************
' This macro uses arrays because it is quicker than ranges
' However it does paste an array to an out of the way place at columns(zw to zz)
' I did this to incorporate a speedy removeduplicates so we would have
' a single list of names
' Then it siphons through the arrays to get totals for each member and
' their averages.
'
' It assumes your data is in columns a through d and puts
' Memebr Name in Column E
' Member total in column F
' Member Average in column G
lastRow = Range("A65536").End(xlUp).Row
myArray = Range("A1:D" & lastRow)
Range("ZW1:ZZ" & lastRow) = myArray
Columns(Range("ZX" & 1).Column).Select
Range("ZX1:ZX" & lastRow).RemoveDuplicates Columns:=Array(1), Header:=xlYes
lastRow2 = Range("ZX65536").End(xlUp).Row
nameArray = Range("ZX2:ZX" & lastRow2)
Range("ZW1:ZZ" & lastRow).ClearContents
Range("A1").Select
rowNumb = 2
For i = LBound(nameArray) To UBound(nameArray)
Debug.Print nameArray(i, 1)
Next i
For i = LBound(nameArray) To UBound(nameArray)
total = 0
For j = LBound(myArray) To UBound(myArray)
If myArray(j, 2) = nameArray(i, 1) Then
tallyCount = tallyCount + 1
total = total + myArray(j, 4)
End If
Next j
If total <> 0 Then
Range("E" & rowNumb) = nameArray(i, 1)
Range("F" & rowNumb) = total
Range("G" & rowNumb) = total/tallyCount
rowNumb = rowNumb + 1
tallyCount = 0
End If
Next i
End Sub
'= averageif(C:C,「A」,D:D)'應該爲團隊A做訣竅。只要得到一個明確的團隊名單,將「A」更改爲任何單元格持有團隊字母你正在平均,然後複製你的公式來覆蓋所有的球隊。 – JNevill
樞軸表將做到這一點。 –
請發佈您的代碼到目前爲止,以專注於什麼不工作,而不是爲您創建一個完整的解決方案。 –