VBA代码删除嘈杂数据行

时间:2016-02-05 22:10:55

标签: excel vba excel-vba

Sub project()
    Dim a, deltat_value1, deltat_value2, deltat_value3 As Integer
    a = 2
    Do
        deltat_value1 = Cells(a, 7).Value
        deltat_value2 = Cells(a + 1, 7).Value
        deltat_value3 = Cells(a + 2, 7).Value
        If Abs(deltat_value1 - deltat_value2) > 5 And Abs(deltat_value2 - deltat_value3) > 5 Then
        Rows(a + 1).EntireRow.Delete
        End If
        a = a + 1
    Loop Until deltat_value1 = 14700
End Sub

我正在尝试删除嘈杂的数据,我设置一个数据点,它的差异大于5,从它上面和下面的点,这是一个嘈杂的数据,我设置删除整行的嘈杂的数据。 但是,我遇到了这个问题:

deltat_value3=Cells(a+2,7).Value
Runtime Error 1004 "Application-defined or Object-defined error"

并且运行时间会非常长。我是VBA编程的新用户,我认为我的方法可能效率低下,可能有其他方法更好,有什么建议吗?

1 个答案:

答案 0 :(得分:1)

怎么样:

Sub ytrewq()
    Dim a As Long, deltat_value1 As Long, deltat_value2 As Long, deltat_value3 As Long
    Dim rKill As Range

    a = 2
    Do
        deltat_value1 = Cells(a, 7).Value
        deltat_value2 = Cells(a + 1, 7).Value
        deltat_value3 = Cells(a + 2, 7).Value
        If Abs(deltat_value1 - deltat_value2) > 5 And Abs(deltat_value2 - deltat_value3) > 5 Then
            If rKill Is Nothing Then
               Set rKill = Cells(a + 1, 1)
            Else
               Set rKill = Union(rKill, Cells(a + 1, 1))
            End If
        End If
        a = a + 1
    Loop Until deltat_value1 = 14700

    rKill.EntireRow.Delete
End Sub