如何从每行删除重复但不删除整列

时间:2013-09-18 18:34:48

标签: excel vba excel-vba

对于上下文,我在A列中有一个带有职称的工作表,然后在B列以后,它有一个人从事这项工作。但是,由于它是从多个项目中填充的,因此一些作业标题在行中具有重复项,其中同一个人在不同项目中执行相同的工作。我需要做的是从每行删除重复项。我试过的所有解决方案都给了我错误。

有人可以帮忙吗?

使用VBA将数据转换为当前形式,将其从另一张纸复制,因此如果可以将其集成到复制中,则不会出现问题。

更新: 所以在宏的早期部分,我必须这样做,但是对于一个列。这有效:

 For np = lastRow To 1 Step -1
    If Application.WorksheetFunction.CountIf(Range("D1:D" & np), Range("D" & np).Text) > 1 Then
    Range("D" & np).ClearContents
    End If
    Next np

但是,当我试图在这个之外添加另一个循环,并将D1:D更改为变量时,我会掉下来。

我想要它做的是从图片的前4行到底部4.我有78个工作,其中一些有20个人,包括重复http://picture.ms/images/2013/09/18/Capture1.png

SO18879773 question example

1 个答案:

答案 0 :(得分:0)

如果你想使用两个循环,那么怎么样呢

Sub RemoveDuplicates()

Dim i As Integer
Dim j As Integer

For i = 1 To Range("A65536").End(xlUp).Row

     For j = i + 1 To Range("A65536").End(xlUp).Row
        If Cells(i, 1) = Cells(j, 1) Then
            If i <> j Then
                'just clear the duplicate cell...
                Cells(j, 1).ClearContents

                'or to delete the entire row if a duplicate is found...
                'Cells(j, 1).EntireRow.Delete
            End If
        End If
   Next

 Next

End Sub

NB - 我使用了Range(“A65536”)。End(xlUp)。如果要获得A列中的最后一行数据,在Excel2007及更高版本中工作表上有更多行,但它听起来像您的数据反正比这要少得多