2017-03-01 7 views
0

Ich habe einen wöchentlichen Bericht, den ich ausführen muss, wo ich eine Liste von Benutzern mit verschiedenen Teams und die Abschlusszeit für jede ihrer Aufgaben erhalten. Ich muss die durchschnittliche Zykluszeit jedes Teams für den Abschluss der Aufgabe melden.VBA-Makro zum Gruppieren und Berichten von Durchschnitten nach Team

task Name Team Cycle time 
7701 john A   5 
7825 tom  A   2 
6945 terri C   7 
7036 jane B   6 
6946 tim  B   9 
6899 john A   4 
7135 jim  C   6 
7805 jim  C   2 
9405 terri C   8 
6209 jason B   2 
7508 derek A   4 
8305 derek A   5 
8426 jane B   6 
3256 juan C   7 

Die Anzahl der Aufgaben, Menschen und Teams wird dynamisch sein

irgendwie Mein Gedanke ist, um die Daten von Teams unstack dann von dort durchschnittlichen Zykluszeiten bekommen, aber ich bin nicht sicher, wie man erreicht Das. Kennt jemand einen VBA-Befehl zum Entstapeln der Daten?

Vielen Dank für Ihre Ideen.

+1

'= AVERAGEIF (C: C, "A", D: D)' sollte es tun für Mannschaft A. Nur eine eindeutige Liste der Teams bekommen, ändern "A" zu, was Zelle hält das Team Brief Sie mitteln und kopieren dann Ihre Formel, um alle Teams abzudecken. – JNevill

+2

Pivot-Tabelle wird es tun. –

+0

Bitte posten Sie Ihren Code soweit, um sich auf das zu konzentrieren, was nicht funktioniert, anstatt eine komplette Lösung für Sie zu erstellen. –

Antwort

0
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 
Verwandte Themen