我尝试了以下代码的几种不同变体,以尝试找到可行的方法。我的最后一次迭代让我离开了:
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的新手经验让我无法调试这个。任何帮助/意见/想法?
答案 0 :(得分:2)
您不能进行多次比较,例如a < b < c
,您需要使用a < b And b < c
。
我不确定会发生什么,但首先评估其中一个<
,然后将结果(True
或False
)与最后一个数字进行比较
修改:首先评估第一个<
,提供True
或False
,因为True
被评估为-1
和False
在投放为0
时为Double
,在查看True
时,您始终会<0.1
。