我正在使用VBA删除不符合特定条件的行。代码正在运行,但是,我无法弄清楚如何保持空白行分隔数据。以下是我正在使用的代码。它适用于删除我想要的内容,但是,它也删除了它们之间的空白行。
Sub DeleteRows()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim i As Long
For i = Range("E" & Rows.Count).End(xlUp).Row To 1 Step -1
If (Range("E" & i).Value > -5 And Range("E" & i).Value < 5) Then
Range("E" & i).EntireRow.Delete
Else
If (Range("D" & i).Value > -500 And Range("D" & i).Value < 500) Then
Range("D" & i).EntireRow.Delete
End If
End If
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
谢谢!
答案 0 :(得分:2)
我认为检查空格应该足够了,如果单元格为空,则不要删除该行。喜欢这个
Sub DeleteRows()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim i As Long
For i = Range("E" & Rows.Count).End(xlUp).Row To 1 Step -1
If (Range("E" & i).Value > -5 And Range("E" & i).Value < 5 and Range("E" & i) <> "") Then
Range("E" & i).EntireRow.Delete
Else
If (Range("D" & i).Value > -500 And Range("D" & i).Value < 500 and Range("D" & i) <> "") Then
Range("D" & i).EntireRow.Delete
End If
End If
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:0)
添加另一个And语句应该可以解决这个问题,例如你可以使用&lt;&gt;说不等于。
If (Range("E" & i).Value > -5 And Range("E" & i).Value < 5) And Range("E" & i).Value <> "" Then