2014-01-10 70 views
-1

我有一個包含大量空白單元格的列,對於每個空白單元格,我想刪除包含空白單元格的行以及其下面的行。它正在刪除空白單元格下方的每一行,這對我來說已證明非常棘手。如果列中的前一個單元格爲空,則刪除行

+1

請分享您的嘗試。 – zx8754

+1

你可以發佈你所做的代碼示例嗎? – Phlume

回答

0

如果要搜索列A,則可以使用此代碼刪除包含空白單元格的所有行以及該列下方的行。當您刪除行時,代碼按照從下到上的順序搜索,以避免跳過任何行。

Sub DeleteRows() 
    For i = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row To 2 Step -1 
     If ActiveSheet.Cells(i, 1).Value = vbNullString Then 
      ActiveSheet.Cells(i, 1).EntireRow.Delete '~~> Removes the blank row 
      ActiveSheet.Cells(i, 1).EntireRow.Delete '~~> Removes the row that were under the blank row 
     End If 
    Next i 
End Sub 
0

有另一種答案貼在幾分鐘前,這是接近正確的答案。我修改它以使用遞歸,並且我嘗試的幾個測試場景似乎工作。訣竅是讓它與多個空白行一起工作。

Public Sub DeleteBlanks(rng As Range) 
Dim cell As Range 
For Each cell In rng.Cells 
    EvaluateCell cell 
Next cell 
End Sub 

Public Sub EvaluateCell(cell As Range) 
If cell.Value = "" Then 
    If cell.Offset(1, 0).Value = "" Then 
     EvaluateCell cell.Offset(1, 0) 
    Else 
     cell.Offset(1, 0).EntireRow.Delete 
    End If 
    cell.EntireRow.Delete 
End If 
End Sub 

Sub Testing() 
DeleteBlanks Selection 
End Sub 
相關問題