如果列包含内容,请删除一行

时间:2014-04-02 14:08:56

标签: excel

我正在制作电子表格,我只是想知道如何删除列中包含内容的行。

示例:

第1行:工作

第2行:工作

第3行:

我有3行,但只有第1行和第2行第一列有内容(" WORK"),第三行没有任何内容。

我想找到一种方法来删除第一列中包含内容的行。

有人?

1 个答案:

答案 0 :(得分:1)

Option Explicit
Sub DeleteNonBlanks()

Dim i           As Long
Dim lr          As Long
Dim wb          As Workbook
Dim ws          As Worksheet

Set wb = ThisWorkbook '' whatever workbook you need
Set ws = wb.Sheets(1) '' whatever sheet you need

lr = ws.Range("A" & ws.Rows.Count).End(xlUp).Row '' last row

For i = lr To 1 Step -1
    If ws.Cells(i, 1).Value <> "" Then
        ws.Rows(i).Delete
    End If
Next i

End Sub

再解释一下:

您确定需要检查的范围中的底行,然后向后迭代它,测试每行第一列的值。如果该值不为空,则删除该行。

要解释为什么你需要它倒退想象你提供的例子,(前两行中有内容,第三行是空白)。现在将它与我迭代它的例子结合起来,除了这一次从1到最后一行。

你的第一次迭代是第一行,它注意到那里的值,删除该行。现在它下面的一切都向上移动一行(第2行变为第1行,第3行变为第2行,依此类推)。我们的迭代现在查看第2行。第2行中的数据移动到第1行,现在将不会对其进行评估,并且不会删除该行。

希望这有帮助。