Excel 如果单元格(“D(j):H(j)”只有值0,则删除行
有人能帮我吗?在C列中,单个单元格最初是空的,代码在该节中工作。在C列中有几个空单元格的部分中,代码不起作用。对于“lastrow2”或代码的其他位置,为了达到预期的目标,我到底需要更改什么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
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”等即可。