2017-03-01 17 views
0

私は毎週別のチームに関連付けられたユーザーの一覧とそれぞれのタスクの完了時間を取得する必要があります。タスクの完了のために各チームの平均サイクル時間を報告する必要があります。チームごとの平均グループ化とレポートを行うマクロ

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 

タスク、人の数、およびチームが私の考えは何とかそこから平均サイクルタイムを取得、その後チームがデータスタックを解除することですが、私は実現するかどうかはわかりません

ダイナミックになりますそれ。誰もがデータをスタック解除するためのVBAコマンドを知っていますか?

ありがとうございました。皆さんありがとうございます。

+1

'A:チームAのトリックを行う必要があります。チームの別のリストを取得するだけで、" A "をチームレターを保持するセルに変更してくださいあなたは平均化しており、数式をコピーして、すべてのチームをカバーするようにします。 – JNevill

+2

ピボットテーブルがそれを行います。 –

+0

解決策全体を作成するのではなく、機能していないものに集中するために、これまでのコードを投稿してください。 –

答えて

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 
関連する問題