对于上下文,我在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:
答案 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及更高版本中工作表上有更多行,但它听起来像您的数据反正比这要少得多