我有一个excel文件,如下所示:
Collumn B Collumn C
John 4000
John 4000
John 4000
John 3201我想删除相同的行: John 4000,但保留行John 3201。我在用
Cells.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
但是这删除了John 3201行和John 4000行,结果是John 4000。
发布于 2014-07-31 08:37:13
你提供了一个错误的范围论点。在本例中,Cells指的是从单元格A1开始的整个工作表,因此如果您的第一个真实数据列位于B中(如您的示例所示),则您将索引(空)列A加上名称,所以Excel留给您一个独立的A1是正确的。
将您的范围对象修改为。
Range("B1:C6").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes再试一次。
发布于 2014-07-31 08:44:19
为了改变现状,我决定用手动的方法来代替。这实际上是扫描整个范围,查找重复的行并删除它们:
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
Loophttps://stackoverflow.com/questions/25054098
复制相似问题