无论是否满足If要求,自下而上的循环都会删除excel中的每一行

时间:2016-07-11 16:06:20

标签: excel vba loops

我尝试了以下代码的几种不同变体,以尝试找到可行的方法。我的最后一次迭代让我离开了:

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&lt;代码&lt; 0.1),那么它将被删除,基本上留下某些异常值。 text to columns部分将一些数据(存储为文本)转换为数字数据类型,以便我可以为此目的使用它。

我遇到的问题是,无论使用的数字是什么,它都会计算为true,然后删除整行,将报告留空,即使我知道有些行不符合标准。

我已经没有想法了,而且我对excel的新手经验让我无法调试这个。任何帮助/意见/想法?

1 个答案:

答案 0 :(得分:2)

您不能进行多次比较,例如a < b < c,您需要使用a < b And b < c

我不确定会发生什么,但首先评估其中一个<,然后将结果(TrueFalse)与最后一个数字进行比较

修改:首先评估第一个<,提供TrueFalse,因为True被评估为-1False在投放为0时为Double,在查看True时,您始终会<0.1