我试图遍历一个数组,当它发现一个不等于特定值的单元格时,它将删除整行。这是代码:
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
我知道我也可以使用自动过滤器来完成此操作,但是我想知道使用数组进行过滤的方法。
答案 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