如果单元格(" D(j):H(j)")只有值0则删除行

时间:2018-05-04 14:51:27

标签: excel vba

有人可以帮助我吗?在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

2 个答案:

答案 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,那么我们可以删除该行。