有人可以帮助我吗?在C列中,单个单元格最初为空,代码在该部分中起作用。在C列中有几个空单元格的部分中,代码不起作用。关于" lastrow2"我究竟需要改变什么?或者在代码的其他位置实现预期目标?
lastrow2 = Cells(Cells.Rows.Count, "C").End(xlUp).Row
For j = lastrow2 To 1 Step -1
If (Cells(j, 4) = 0 And Cells(j, 5) = 0 And Cells(j, 6) = 0 And Cells(j, 7) = 0 And Cells(j, 8) = 0 And Cells(j, 9) = 0) Then
Rows(j).Delete
End If
Next j
非常感谢您的支持。 :)
祝你好运, Bamane
答案 0 :(得分:0)
测试列 C 可能太浅。这样:
Sub trewq()
ActiveSheet.UsedRange
Set r = ActiveSheet.UsedRange
lastrow2 = r.Rows.Count + r.Row - 1
For j = lastrow2 To 1 Step -1
If (Cells(j, 4) = 0 And Cells(j, 5) = 0 And Cells(j, 6) = 0 And Cells(j, 7) = 0 And Cells(j, 8) = 0 And Cells(j, 9) = 0) Then
Rows(j).Delete
End If
Next j
End Sub
可能会更好..................我们正在检查 D 列我
答案 1 :(得分:0)
不是检查每个单元格是否为0,为什么不使用几个公式?
Sub DeleteRowsWithZero()
Dim lastrow As Long
lastrow = Cells(Cells.Rows.Count, "C").End(xlUp).Row
Dim j As Long
For j = lastrow To 1 Step -1
If WorksheetFunction.Sum(Range("D" & j & ":I" & j)) = 0 And _
WorksheetFunction.CountIf(Range("D" & j & ":I" & j), "*") = 0 Then
Rows(j).Delete
End If
Next
End Sub
WorksheetFunction.Sum()
检查测试范围内的所有单元格的值是否为0.
但是如果其中一些单元格具有文本值而不是数值,那么您仍然会得到0,因此我们使用WorksheetFunction.CountIf()
来测试这些单元格中是否只包含文本(通过检查通配符) “*”)。
如果两个都检查= 0,那么我们可以删除该行。