2016-03-02 195 views
-2

我試圖使用下面的代碼刪除重複項。但我沒有得到期望的輸出。除重複數據外,其他數據也會被刪除。刪除重複項excel vba

Sub account() 
    Dim d As String 
    Call Pvt_Account(192, 8) 
End Sub 

Sub Pvt_Account(RowNumber As Integer,sheetnumber As Integer) 
    Worksheets(sheetnumber).Activate 
    NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count 


    m = RowNumber 
    CellNumber = 2 
    For i = 1 To NumRows - 1 
     Sheet2.Range("C" & RowNumber) = Application.WorksheetFunction.CountIf(Range("F2:F" & NumRows), Cells(CellNumber, 6)) 

     Sheet2.Range("b" & RowNumber) = Worksheets(sheetnumber).Range("f" & CellNumber) 
     RowNumber = RowNumber + 1 
     CellNumber = CellNumber + 1 
    Next i 

    Worksheets(2).Activate 

    r = (m + NumRows) - 2 

    Range("B" & m & " :C " & r).RemoveDuplicates Columns:=Array(2), Header:=xlYes 
End Sub 
+0

您正在調用'Pvt_Account_Disablement',但您的'sub'被命名爲'Pvt_Account'?此外,「沒有得到理想的結果」是什麼意思?請明確解釋發生了什麼問題!同樣在將來確保縮進代碼 – Dan

+0

Dan,感謝您的快速響應。子名,我錯誤地給了,現在我已經糾正了它。但我面臨的問題是,所需數據與重複數據一起被刪除。我沒有得到任何語法錯誤,但我想一些邏輯錯誤。 – Alfy

+0

你的代碼不太容易遵循,我可以建議你添加一個解釋,說明它在做什麼(更詳細),還有你使用更具表現力的變量名稱。例如,'p'應該被稱爲'worksheetNumber'。如果你也爲'm','k','j'和'r'給出了類似的明確名稱,那麼你的代碼將更容易閱讀。 – Dan

回答

1

Range("B" & m & " :C " & r).RemoveDuplicates Columns:=Array(2), Header:=xlYes 

,我想你會想Columns:=Array(1)代替,即從範圍Bm:Cr,這是B的第一列刪除重複。 :C之後的空格也應該刪除。

+0

KimPhúNgô,非常感謝您的解決方案。它現在可以工作,並感謝丹的快速響應。 – Alfy