2016-03-02 193 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