我试图编写一个宏,从第二行到最后一行过滤列F,检查列中的值是否为数字,长度是否为5.如果列G中的值为G,则允许使用不同的长度。同一行包含" TEST"。如果值不符合标准,则应删除该行。宏似乎工作,但我需要多次启动它来过滤所有值。 这是宏:
Sub Makro1()
Dim lrow As Long
lrow = Cells(Cells.Rows.Count, "F").End(xlUp).Row
Dim Rng As Range
Set Rng = Range("F2:F" & lrow)
For Each cell In Rng
If Not IsNumeric(cell) Or (Len(cell) <> 5 And
InStr(UCase(cell.Offset(0, 1).Value), "TEST") = 0) Then
cell.EntireRow.Delete
End If
Next
End Sub
答案 0 :(得分:0)
尝试使用此代码时,它会使用向后循环,在迭代收集时建议,我们会从中删除:
Sub Makro1()
Dim lrow As Long, i As Long, cellValue As String
lrow = Cells(Rows.Count, "F").End(xlUp).Row
For i = lrow To 2 Step -1
cellValue = Cells(i, "F").Value
If Not (IsNumeric(cellValue) And Len(cellValue) = 5) And Cells(i, "G").Value = "TEST" Then
Rows(i).Delete
End If
Next
End Sub