如何根据J column = 0中发布的行删除行?

时间:2011-10-21 10:19:06

标签: excel vba excel-2010

我在Excel电子表格中有以下内容,

a cut down version of my spreadsheet

如何根据J column = 0中发布的行删除行?

最好将行剪切并将其粘贴到另一张纸中..但如果您可以帮我删除它,那就太好了。

2 个答案:

答案 0 :(得分:3)

Sub Delete_Zero_Codes()  ' Deletes The Zero  Codes 
    Dim rCell As Range
    Dim strAddress As String
Application.ScreenUpdating = False

    With Thisworkbook.Sheets("sheetname").Columns("J")
        Set rCell = .Find(What:=0, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns)
        If Not rCell Is Nothing Then
            Do
            strAddress = rCell.Address
            rCell.EntireRow.Delete
            Set rCell = .FindNext(Range(strAddress))
            Loop Until rCell Is Nothing
        End If
    End With

Application.ScreenUpdating = True

End Sub

这些宏删除了J列的零代码,并没有将它们粘贴到其他工作表,如果你需要将J列的零代码复制到其他工作表,那么让我知道我会更新它

答案 1 :(得分:3)

此代码自动过滤活动表格中J = 0的行,将它们复制到第二个工作表上的第一个空白行,然后从活动表格中删除行。

更改此行Set ws2 = Sheets(2)以将行复制到不同的工作表,即第五张工作表的Set ws2 = Sheets("Your Sheet Name")Set ws2 = Sheets(5)

Sub MoveEm()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Set ws1 = ActiveSheet
    Set ws2 = Sheets(2)
    Dim rng1 As Range
    Application.ScreenUpdating = False
    With ws1
        .AutoFilterMode = False
        .Columns("j").AutoFilter Field:=1, Criteria1:="0"
        With .AutoFilter.Range.Offset(1, 0).EntireRow
        Set rng1 = ws2.Cells.Find("*", ws2.[a1], xlValues, , xlRows, xlPrevious)
        If rng1 Is Nothing Then
        Set rng1 = ws2.[a1]
        Else
        Set rng1 = ws2.Cells(rng1.Row + 1, "A")
        End If
            .Copy rng1
            .Delete
        End With
        .AutoFilterMode = False
    End With
    Application.ScreenUpdating = True
End Sub