Vba:删除过滤的行

时间:2017-12-14 17:17:24

标签: excel vba excel-vba

我有一张带有列的Excel表格:

Name - Surname - Date - Amount - Ticker

日期的格式为dd / mm / yyyy,而 Ticker 则为0或1。 我想删除日期在01/01/2000之后的所有行或者自动收报机为0。

我设法记录了一个宏,我在那里过滤和删除过滤的行,但速度很慢。您是否知道如何通过VBA以清晰的方式删除它?

由于

2 个答案:

答案 0 :(得分:0)

尽管我知道逐行循环可能很慢,但我已经成功使用了以下方法并且速度不是太慢,但在此期间可以随意提出更好的方法来完成手头的任务,此代码将按您的要求执行,而无需过滤任何内容:

Sub foo()
LastRow = Sheet1.Cells(Sheet1.Rows.Count, 5).End(xlUp).Row 'change sheet1 to your sheet if different

For RowCounter = LastRow To 2 Step -1 'loop from second row to the end
    If Sheet1.Cells(RowCounter, 5).Value = 0 Or Sheet1.Cells(RowCounter, 3).Value > "01/01/2000" Then 'check if column 5 equals 0 or column 3 equals 01/01/2000 then
        Sheet1.Rows(RowCounter).EntireRow.Delete 'delete that column
    End If
Next RowCounter 'next row
End Sub

答案 1 :(得分:0)

这应该做你想要的,familia。如果您需要更多帮助,请告诉我

Sub testy()
    Dim ayy As Long, ayooo As Long
    Dim lmao As Range

    ayy = Cells(Rows.Count, "A").End(xlUp).Row

    For ayooo = ayy To 2 Step -1
        If (Cells(ayooo, 3).Value > 36526) Or (Cells(ayooo, 5).Value = 0) Then Cells(ayooo, 1).EntireRow.Delete
    Next ayooo

End Sub