读书人

一个删除重复行的宏.哪位高手能帮忙改

发布时间: 2012-12-30 10:43:15 作者: rapoo

一个删除重复行的宏..谁能帮忙改改
本帖最后由 weiyumingwww 于 2012-11-20 08:16:12 编辑 我刚学VBA,要求写一个宏,删除已经排好序的Excel中重复的行,Excel表格不知道有多少行多少列

我写的代码如下:跑起来有问题,运行完第一遍宏以后再运行第二遍,程序会把不重复的行的数据也删了.怎么办

Public Sub DeleteRepeatRow()
Dim nRow As Long '总行数
Dim nColumns As Long '列数
Dim nR As Long '行变量
Dim nC As Long '列变量
Dim CountC '相同的列数
Dim i As Long '记录当前检查的行
Dim SheetA As Range

nRow = ActiveSheet.UsedRange.Rows.Count '获得当前表格的总行数

nR = 1
Set SheetA = ActiveCell()

Do While nR <= nRow
CountC = 0
i = nR
nColumns = SheetA.Cells(nR).End(xlToLeft).Column '第nR行的列数
If nColumns = SheetA.Cells(nR + 1).End(xlToLeft).Column Then
For nC = 1 To nColumns
If SheetA.Cells(nR, nC).Value = SheetA.Cells(nR + 1, nC).Value Then
CountC = CountC + 1 '如果第 nC 列的第 nR 行与第 nR + 1 行相同,则使 CountC + 1
End If
Next
If CountC = nColumns Then
'如果CountC=nCoulumns,则说明第 nR 行与第 nR + 1 行完全相同,删除 nR + 1 行,同时使 nR 指向当前比较的行,总行数减1
ActiveSheet.UsedRange.Rows((nR + 1) & ":" & (nR + 1)).Delete Shift:=xlUp
nR = i
nRow = nRow - 1
Else
nR = nR + 1
End If
End If
nR = nR + 1
Loop


End Sub

[解决办法]
找出问题最快的办法就是调试。

你在运行第二次的时候单步运行,看看那里出的问题。

读书人网 >VBA

热点推荐