正确地增加我的循环

时间:2014-08-25 07:48:26

标签: vba excel-vba excel

下面的代码计算col E,colG和col I之间的平均值(如K列中的图片所示),但有些东西并不能满足我的需要。我的代码没有正确地采用G列。它接受循环5,7,3,15,10而不是5,5,7,3,3,3,15,15,10,10。它没有考虑A列中有多少重复名称。如何解决问题?有人能帮忙吗?谢谢!  (看图片)enter image description here

   For f= 1 To ws.Range("F" & Rows.Count).End(xlUp).Row
   nameF = ws.Range("F" & f).Value
     For totRng = 1 To lastrowA
       'if names from col A and col F coincide, then sum their numbers from col E
        If nameF = ws.Range("A" & totRng).Value Then ws.Range("G" & f).Value = 
        ws.Range("G" & f).Value + ws.Range("E" & totRng).Value

        On Error Resume Next
        If nameF = ws.Range("A" & totRng).Value Then _
            ws.Range("H" & f).Value = ((ws.Range("E" & f).Value / ws.Range("G" & f).Value)) * ws.Range("I" & f).Value

     Next totRng
   Next f

我应该更改此值:' / ws.Range(" G"& f).Value)'

1 个答案:

答案 0 :(得分:1)

这是一段工作代码

For f = 2 To ws.Range("F" & Rows.Count).End(xlUp).Row
nameF = ws.Range("F" & f).Value
    For totRng = 2 To lastrowA
       'if names from col A and col F coincide, then sum their numbers from col E
        If nameF = ws.Range("A" & totRng).Value Then
            ws.Range("G" & f).Value = ws.Range("G" & f).Value + ws.Range("E" & totRng).Value
        End If
    Next totRng

    For totRng = 2 To lastrowA
        'calculate the average
        If nameF = ws.Range("A" & totRng).Value Then
            Debug.Print nameF & " found on line " & totRng & " person we have is on line " & f & ". Formula is : ((" & ws.Range("E" & totRng).Value & "/" & ws.Range("G" & f).Value & ")*" & ws.Range("I" & totRng).Value & "=" & (((ws.Range("E" & totRng).Value / ws.Range("G" & f).Value)) * ws.Range("I" & totRng).Value)
            ws.Range("H" & f).Value = ws.Range("H" & f).Value + (((ws.Range("E" & totRng).Value / ws.Range("G" & f).Value)) * ws.Range("I" & totRng).Value)
        End If
    Next totRng
Next f