EXCEL 删除行 VBA?

一个工作薄有几个sheet ,每个sheet的行数也不太相同,怎么用VBA实现批量删除指定sheet的E1:E20中间带0的行?注意最后一行的合计行需要保留。

sub 删除指定sheet指定内容行()

for  i=1 to 20

if sheets("指定sheet名").cells(i,5)=0 then rows(i & ":" & i).delete

next

end sub

测试效果如上动态图

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-05-04
以删除当前工作表为例:
Sub 删除0值行()
Dim sh As Worksheet, arr, ads$
Set sh = ActiveSheet
arr = sh.Range("E1:E20").Value
For i = 1 To UBound(arr)
If arr(i, 1) = 0 Then
ads = ads & "," & sh.Cells(i, 1).Address(0, 0)
End If
Next
ads = Mid(ads, 2)
sh.Range(ads).EntireRow.Delete
End Sub追问

这个我试了下,为什么多点几次后,不管是不是空行都给删除了,而且我试了下把区域改为E4:E65的时候删除完了但是中间还是有0的行,我现在是这样的,但是这个没办法确定区域,会把我1-2行的合并单元格也给删除一行,所以我就想固定下区域,麻烦看下能不能帮我修改下

追答

不好意思,我忘了改回来了,需要把我代码中的arr(i,1)和cells(i,1)中的1改成5
你图中的代码犯了最常见的错误,删除行是要从下往上删了,不然你上面删了一行下面的数据默认上移,就不对了。把 1 to x要改成x to 1 step -1
合并单元格的话,如评论中所言,需要加入if判断是否为合并单元格,然后再进行判断是否需要删除

本回答被提问者采纳
相似回答