当前位置: 代码迷 >> VBA >> 一个删除重复行的宏.哪位高手能帮忙改改
  详细解决方案

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

热度:3850   发布时间:2013-02-26 00:00:00.0
一个删除重复行的宏..谁能帮忙改改
本帖最后由 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
  相关解决方案