当列在下一行

时间:2017-04-27 07:12:22

标签: vba

可以任何人提供宏或VBA代码或想法如何开始... 我在下面发布了一个例子..但在Real我的EXL表格很大..

我的专栏中有什么: 1 2 3 4 4 4 4 4 4 4 4 4 4 4 4 3 4 3 4 4 4 五 五 3 4 4 3 4 4 4 2 3 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3

我需要的结果

1 2 3 4 3 4 3 4 五 3 4 3 4 2 3 4

我想要的只是删除行

2 个答案:

答案 0 :(得分:0)

在一个范围的每个单元格上循环,并检查单元格(A,i)和单元格(A,i-1)的值是否与我是迭代器的位置相同。

答案 1 :(得分:0)

我相信这就是你要找的东西。

它将下一行的值与所选行的值进行比较,如果两个值相同,则删除整个下一行。

请注意,列表不应包含任何空白单元格。

Public Sub DeleteDuplicateRows()
    On Error GoTo ErrProc

    Do Until IsEmpty(ActiveCell)
        With ActiveCell
            'Compare next row value against selected row value
            If .Offset(1, 0).Value <> .Value Then
                'Value not the same - jump to it
                .Offset(1, 0).Select
            Else
                'Value the same - delete entire next row
                .Offset(1, 0).EntireRow.Delete xlShiftUp
            End If
        End With
    Loop

Leave:
    On Error GoTo 0
    Exit Sub

ErrProc:
    MsgBox Err.Description
    Resume Leave
End Sub

编辑:

Public Sub DeleteDuplicateRows()
    On Error GoTo ErrProc

    Do Until IsEmpty(ActiveCell)
        With ActiveCell
            If .Offset(1, 0).Value = .Value And .Offset(1, 1).Value = 0 Then
                .Offset(1, 0).EntireRow.Delete xlShiftUp
            Else
                .Offset(1, 0).Select
            End If
        End With
    Loop

Leave:
    On Error GoTo 0
    Exit Sub

ErrProc:
    MsgBox Err.Description
    Resume Leave
End Sub