[英]VBA Excel : Delete excel row
我有一个Excel文件,看起来像这样:
Collumn B Collumn C
John 4000
John 4000
John 4000
John 3201
我想删除相同的行:John 4000,但保留行John3201。我正在使用
Cells.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
但这会删除行John 3201和两行John 4000,结果是John 4000。
您提供了错误的Range参数。 Cells
在这种情况下指的是在单元格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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.