当单元格不等于数组中的字符串时删除行

时间:2020-04-04 20:54:06

标签: excel vba

我试图遍历一个数组,当它发现一个不等于特定值的单元格时,它将删除整行。这是代码:

Sub DeleteTest()

Dim crr()

crr = Range("A3:A1000")

For i = LBound(crr, 1) To UBound(crr, 1)
    If (crr(i, 1) <> "One" And crr(i, 1) <> "Two") Then
       ' Line to delete the row in which the value of the cell is not One or Two

    End If
Next

End Sub

我知道我也可以使用自动过滤器来完成此操作,但是我想知道使用数组进行过滤的方法。

2 个答案:

答案 0 :(得分:1)

这是一种方法:

Sub DeleteTest()

    Dim rng As Range, crr(), i As Long

    Set rng = Range("A3:A1000")
    crr = rng.Value

    For i = UBound(crr, 1) To LBound(crr, 1) Step -1 '<<< loop backwards
        If (crr(i, 1) <> "One" And crr(i, 1) <> "Two") Then
           rng.Cells(i).EntireRow.Delete
        End If
    Next

End Sub

答案 1 :(得分:0)

尝试此代码

Sub Test()
Dim x, r As Range
With ThisWorkbook.Sheets("Sheet1")
    Set r = .Range("A3:A1000")
    x = Filter(.Evaluate("TRANSPOSE(IF((" & r.Address & "=""One"")+(" & r.Address & "=""Two""),""A"" & ROW(" & r.Address & ")))"), False, False)
    If UBound(x) = -1 Then Exit Sub
    .Range(Join(x, ",")).EntireRow.Hidden = True
    On Error Resume Next
        r.SpecialCells(xlCellTypeVisible).EntireRow.Delete
    On Error GoTo 0
    .Rows.Hidden = False
End With
End Sub
相关问题