Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果单元格(“D(j):H(j)”只有值0,则删除行_Excel_Vba - Fatal编程技术网

Excel 如果单元格(“D(j):H(j)”只有值0,则删除行

Excel 如果单元格(“D(j):H(j)”只有值0,则删除行,excel,vba,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 C

有人能帮我吗?在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

测试柱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

可能更好…………我们正在通过I

检查列D,而不是检查每个单元格是否为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,那么我们可以删除该行。

这些列肯定是数字吗?也许还要检查“”(空字符串)?欢迎使用SO!你能更详细地描述一下“不起作用”吗?@MiguelH我用下面的代码输入一些空值:对于k=2到lastrow3,设置Myrange=Range(单元格(k,4),单元格(k,32))。特殊单元格(xlCellTypeBlanks)Myrange。公式=“0”下一个k@MathieuGuindon当C中的部分开始时,代码将停止wokring,其中一些单元格为空。如果您遇到错误(仍不清楚),请将您的问题包含在您收到的确切错误消息中-请参阅和。非常感谢。这段代码运行得很好,速度也很快。你救了我的周末:)你能告诉我如何理解代码中的前三行吗?因为我经常看到这一点,但我不知道如何使用它,在这种情况下,这更有意义。谢谢帕特里克,这也很有效:)你能解释我如何使用或理解范围(“D”&j&“:I”&j”)吗?因为我看到了使用这个函数的不同类型。类似范围(A:A&lastrow)。。。我想了解这一点,因为我对VBA感兴趣。通过编写
range(“startcell:endcell”)
,可以使用A1样式引用引用一系列单元格。e、 g.:
Range(“A1:D7”)
选择前四列和前七行的交点,
Range(“A:C”)
选择整个前三列,
Range(“1:3”)
选择整个前三行,等等。如果有14行,那么
Range(“D”&j&“:I”&j)
只要在循环过程中使用变量
j
引用范围“D14:I14”、“D13:I13”、“D12:I12”等即可。