无论if满足,bottom-to-top循环都会删除excel中的每一行

我已经尝试了几种不同的下面的代码来尝试find一个可能的方法。 我最后一次迭代离开了我:

Dim D As Range Dim x As Integer, c As Long, lre As Long c = Range("A" & Rows.Count).End(xlUp).Row lre = Sheets("Exception Report").Cells(Sheets("ExceptionReport").Rows.Count, "A").End(xlUp).Row Range("D2:D" & lre).TextToColumns Range("F2:F" & lre).TextToColumns For x = c To 2 Step -1 If -0.1 < CDbl((Cells(x, "D").Value) - (Cells(x, "E").Value)) < 0.1 And -0.1 < CDbl((Cells(x, "F").Value) - (Cells(x, "G").Value)) < 0.1 Then Cells(x, 1).EntireRow.Delete End If Next 

这部分代码看两对单元格,我从另一个单元格中减去一个单元格以查看差异。 如果它在上述范围内(-0.1 <代码<0.1),那么它将被删除,基本上留下一定的exception值。 文本到列部分将一些数据(以文本forms存储)转换为数字数据types,所以我可以为此使用它。

我一直面临的问题是,无论使用的是什么数字,它都会评估为真,然后删除整行,即使我知道有不符合标准的行,报告也是空白的。

我已经用完了想法,而且我用excel的新手经验让我无法debugging。 任何帮助/意见/想法?

您不能像a < b < c那样a < b < c多重比较,您需要使用a < b And b < c

我不确定会发生什么,但是其中的一个是先评估的,然后将结果( TrueFalse )与最后一个混合起来的数字进行比较。

编辑:第一个似乎是先评估,给予TrueFalse因为当被赋为DoubleTrue被评估为-1False0 ,当检查<0.1时总是变为True