我创建了这个宏来删除0
上Column 5
值的行,从Row6开始。它应该在Column 2
上有一个空单元格的行上停止。
我的数据仅包含600 rows
。但是,在Row 20
左右后,电子表格一直在等待,我需要按Esc
键才能停止它。当它停止时,它位于最后一行,但它不会执行到sum column 4
的最后一部分。
如果我再次按下宏,它可以正常使用新数据,并在column 4
中添加总和。 (顺便说一句,这是我在Excel中的第一个宏)。
Sub DeleteRows()
'
' DeleteRows Macro
' Keyboard Shortcut: Ctrl+d
'
Cells(6, 5).Select
Do While (Cells(ActiveCell.Row, 2) <> "")
Do While (Cells(ActiveCell.Row, 5) = 0)
Rows(ActiveCell.Row).Select
Selection.Delete Shift:=xlUp
Loop
Cells(ActiveCell.Row + 1, 5).Select
Loop
Cells(ActiveCell.Row, 4).Select
Dim cel1 As String, cel2 As String
cel1 = ActiveCell.Offset(-1, 0).End(xlUp).Address
cel2 = ActiveCell.Offset(-1).Address
ActiveCell.Value = "=sum(" & (cel1) & ":" & (cel2) & ")"
End Sub
答案 0 :(得分:1)
删除行时从下往上循环,否则可能会跳过行。
sub deleteRows()
dim i as long
with worksheets("Sheet1")
for i=.cells(.rows.count, "B").end(xlup).row to 6 step -1
if .cells(i, "E").value2 =0 then
.cells(i, "E").entirerow.delete
end if
next i
with .cells(.rows.count, "D").end(xlup)
.offset(1, 0).formula = "=sum(" & .parent.range(.cells(1), .cells(1).end(xlup)).address & ")"
end with
end with
end sub