如果特定工作表中的单元格等于特定值,则删除该行
我正在检查一个范围内的所有细胞。 如果单元格的值等于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
这里的关键是值是由公式生成的。 它可能包含一个浮点错误。
比较一个值到一个string"0"
是不好的编码 – 苹果与苹果不桔子!
为了摆脱浮点错误,使用小数点数为0的ROUND(Num,#小数)
将结果与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