2014-01-28 12 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