VBA Excel:删除Excel行

我有一个excel文件,看起来像这样:

Collumn B Collumn C John 4000 John 4000 John 4000 John 3201 

我想删除相同的行:约翰4000,但保持行约翰3201.我正在使用

Cells.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes

但是这会删除行约翰3201和两行约翰4000,结果是约翰4000。

你提供了一个错误的Range参数。 在这种情况下,单元格是指从A1单元格开始的整个表格,所以如果您的第一个实际数据列在B中(如您的示例所示),那么您将索引(空)列A加上名称,所以Excel是正确的与一个单一的约翰。

修改你的范围对象为例如

 Range("B1:C6").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes 

然后再试一次。

只是为了动摇,我决定手动做这个替代。 这实际上扫描范围,寻找重复的行并删除它们:

 Dim vRange As Range Dim vRow As Long Dim vRowStart As Long Dim vRowCount As Long Dim vDict As Object Dim vCol As Long Dim vColStart As Long Dim vColEnd As Long Dim vLine As String Set vRange = ActiveSheet.UsedRange vRowCount = vRange.Rows.Count Set vDict = CreateObject("Scripting.Dictionary") vDict.CompareMode = TextCompare vRowStart = 1 vColStart = 1 vColEnd = 2 vRow = vRowStart Do While vRow <= vRowCount vLine = "" For vCol = vColStart To vColEnd vLine = vLine & Chr(0) & vRange(vRow, vCol).Value Next If vDict.Exists(vLine) Then vRange(vRow, 1).EntireRow.Delete vRow = vRow - 1 vRowCount = vRowCount - 1 Else vDict.Item(vLine) = True End If vRow = vRow + 1 Loop