2014-01-28 13 views
0

我是新来的,但我希望我可以得到我的问题的答案 我试图寻找我的问题,但无法找到一个线程很抱歉,如果已经有类似的线程。查找重复项,总和对应并在一个新栏中张贴总和Excel VBA

我有几个文件包含列A到T中的几个列表。我需要在一列中找到重复项,然后求和位于不同列中的相应单元格,然后将结果添加到新列中。 我已经有一个代码,做我所需要的,但不完全如何我想要的。问题是此代码将结果写入与重复项的第一个(名称)相同的行中。所以,如果我的表是这样的,它会写的结果如下所示:

A B C 
a 5 10 
a 2 
a 3 
b 2 6 
b 3 
b 1 
c 4 7 
c 1 
c 2 

我希望它写在列1,2和3的结果,而不是显示直到“右”行空白。我也想继续结果旁边的类型名称。像这样:

Name Results 
a 10 
b 6 
c 7 

`

Sub sample() 

Dim lastRow As Integer, num As Integer, i As Integer 
lastRow = Range("C65000").End(xlUp).Row 


For i = 14 To lastRow 
num = WorksheetFunction.Match(Cells(i, 3), Range("C1:C" & lastRow), 0) 
If i = num Then 
Cells(i, 25) = WorksheetFunction.SumIf(Range("C1:C" & lastRow), Cells(i, 3), Range("J1:J" & lastRow)) 
Cells(i, 25).Interior.Color = vbGreen 
Else 
Cells(i, 3).Interior.Color = vbYellow 
End If 
Next i 

End Sub 

`

我已经试过tweeking代码升技,但我只是不明白如何使它所以我得到了我需要的.. :/

感谢所有帮助

另一个问题我有代码,如果有一个空行(其中HAP笔很多)代码仅适用于行,直到空白然后退出,并告诉我有一个问题。

回答

0

试试这个,适合我。

Application.ScreenUpdating = False 
Range("c:c").Clear 
For i = 1 To Sheet1.UsedRange.Rows.Count 
    alreadythere = False 
    For k = 1 To i 
     If Cells(k, 1) = Cells(i, 1) Then 
      alreadythere = True 
      Exit For 
     End If 
    Next k 
    If alreadythere = False Then 
     Cells(i, 3) = Cells(i, 2) 
     Else 
     Cells(k, 3) = Cells(k, 3) + Cells(i, 2) 
    End If 
Next i 
Application.ScreenUpdating = True