一个删除重复行的宏..谁能帮忙改改
本帖最后由 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
[解决办法]
找出问题最快的办法就是调试。
你在运行第二次的时候单步运行,看看那里出的问题。