excel vba 删除空白单元格所在的行

单击click控件,查找某一列的单元格,将空白的单元格中所在的行删除。

实现的效果为:

这只是一个简单示例,具体数据会有很多列,上百行。但是只需要查找关键列,如“姓名”中的空白单元格。望高人指点。

1、首先在开发工具中打开VBA编辑器。

2、在单元格区域当中输入一些内容。

3、在VBA编辑器中插入模块。

4、在模块当中输入如下代码,然后运行Sub 清除空白数据行()Dim i As LongFor i=Cells(1048576, 2).End(xlUp).Row To 3 Step-1If Cells(i, 3)="" Then'如果单元格为Cells(i,1).EntireRow.Delete'符合条件的都删除整行End IfNext'检测下一个End Sub。

5、用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,程序执行后第三列为空白之单元格所在行全部删除。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-18
假设你要查找的空白单元格在B列
Sub my()
Dim i As Long
For i = 1 To [A65536].End(xlUp).Row
If Cells(i, 2) = "" Then '这里的2就是你的列数,可以自己替换
Rows(i & ":" & i).Delete Shift:=xlUp
End If
Next
End Sub追问

控件在sheet1,数据在sheet2,该如何实现?

感谢高人,你的代码的确可以实现我的要求,但是在我使用的时候发现了一个问题。在我录入了一个60多行的数据时,使用该功能控件,点击一次不能把所有应删除的行删除,而是点了很多次才都删完。不知道是什么问题。

本回答被提问者和网友采纳
第2个回答  2018-12-11
Sub Macro1()
Dim i As Integer '小于32,767用integer
'Dim i As Long '超过32,767用Long
For i = [a20].End(1).Row To 1 Step -1 'a20到a1结束,步长 -1,就是每循环一次减1
If Cells(i, 1) = "" Then '判断 i 行是否为空?
Range("a" & i & ":e" & i).Select '然后选择ai:ei
Selection.Delete Shift:=xlUp '下方单元格上移的方式删除该行,这样删除不会影响到f列的数据
End If
Next
End Sub
第3个回答  2014-09-18
Sub 删除行()
    For i = [b65536].End(3).Row To 2 Step -1
        If Cells(i, 2) = "" Then Rows(i & ":" & i).Delete Shift:=xlUp
    Next
End Sub

第4个回答  2020-01-14
Sub delblank()
On Error Resume Next

Columns("B:B").SpecialCells(xlCellTYpeBlanks).Entirerow.Delete

End sub
相似回答