繁体   English   中英

VBA Excel:删除Excel行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM