删除特定单元格中的值不等于0或N / A的所有行

时间:2015-11-27 10:47:09

标签: excel vba excel-vba

我已经将一个公式应用于一个特定的单元格,一个计数if,以确保它在第一次出现时显示数字为0,并且向前显示1和2等。

现在我需要宏中的帮助来删除数字不是0或N / A的所有时间(它不是文本的地方,不应该被删除)。我尝试录制宏并略微更改我的凭据,但它根本不起作用。请帮忙。考虑到我试图做出的所有迭代,它现在处于糟糕的状态。

raw.Range("D3:D" & lastRow).Formula = "=IF(OR(AND(A1="""",A2=""""),AND(A1="""",A4<>"""")),""N/A"",COUNTIF(A$1:A2,A3))"
    Rows("A:D" & lastRow).Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$3:$E" & lastRow).AutoFilter Field:=4, Criteria:<>("0"), Operator:=xlFilterValues
    Rows("1830:1830").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$3:$E$3585").AutoFilter Field:=4

1 个答案:

答案 0 :(得分:0)

这将删除每行重复的前四个单元格。它使第一列在列A中具有重复值。任何重复的文本值也保持不变。

Sub deleteDuplicates()
    With Worksheets("Sheet1")
        iRow = .Cells(1, 1).End(xlDown).Row
        While iRow > 0
            If Application.WorksheetFunction.CountIf(.Range(.Cells(1, 1), .Cells(iRow, 1)), .Cells(iRow, 1)) > 1 _
                And Application.WorksheetFunction.IsNumber(.Cells(iRow, 1)) Then
                .Range(.Cells(iRow, 1), .Cells(iRow, 4)).Select
                Selection.Delete Shift:=xlUp
            End If
            iRow = iRow - 1
        Wend
    End With
End Sub