2016-09-28 44 views
0

我正在使用VBA刪除不符合特定條件的行。代碼工作,但是,我不知道如何保持空白行分隔數據。以下是我正在使用的代碼。它適用於刪除我想要的內容,但是,它也會刪除它們之間的空行。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 

謝謝!

回答

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 
+0

工作得很漂亮!謝謝。這是漫長的一天,最後一部分讓我頭痛。再次感謝! – kong1802

+0

不客氣。我理解了漫長的日子和自己的頭痛。 :) –

0

添加另一個And語句應該做例如技巧可以用來<>要說不等於。

If (Range("E" & i).Value > -5 And Range("E" & i).Value < 5) And Range("E" & i).Value <> "" Then 
+0

這是一段時間,因爲我使用了VBA ...爲什麼'Range(「E」&i).Value <>「」'優於'NOT ISEMPTY(Range(「E」&i).value)'? –

+0

@DarrenH - 如果一個單元格被設置爲一個空字符串(例如,簡單地在單元格中輸入''',或者使用諸如'=「」''的公式),那麼'Range(「E」&i).Value < >「」'將爲True,但由於單元格不爲空,所以'ISEMPTY(Range(「E」&i))將爲False。 – YowE3K

+0

但是,在這個特定的情況下,任何字符串(即使是ZLS)都不會通過'value <5'檢查,所以甚至不會到達空檢查 –