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

我正在检查一个范围内的所有细胞。 如果单元格的值等于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