繁体   English   中英

如果特定工作表中的单元格等于特定值,则删除该行

[英]If cells in specific sheet equal a specific value, then delete the row

我正在检查范围内的所有单元格。 如果单元格的值等于0(该值由公式生成),则删除该行。

Sub CleanJunk()
    For Each c In Worksheets("testsheet").Range("B33:B533").Cells
        If c.Value = "0" Then Rows(c.Row).EntireRow.Delete
    Next
End Sub

现在,该模块可以正常运行。 它什么也没做。 没有任何行被删除或以任何方式受到影响。

您尚未限定Rows调用,并且需要向后循环:

Sub CleanJunk()
  Dim n as long
    for n = 533 to 33 step -1
    If Worksheets("testsheet").Cells(n, "B").Value2 = 0 Then Worksheets("testsheet").Rows(n).EntireRow.Delete
    Next
End Sub

这里的关键是值是由公式生成的。 它可能包含浮点错误。

将值与字符串"0"比较也不是很好的编码-苹果与苹果而不是桔子!

要消除浮点错误,请使用`ROUND(Num,小数位数),其中小数位数= 0

比较结果为0。

Option Explicit 'so you don't confuse your variables
Sub CleanJunk()
Dim c as range
    For Each c In Worksheets("testsheet").Range("B33:B533").Cells
        'compare values rounded to integer with 0
        If Round(c.Value, 0) = 0 Then c.EntireRow.Delete
    Next c 'it pays to be explicit
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM