比较十进制值Excel VBA

我想在Excel VBA中比较十进制值,并删除符合条件的行。 这是我的原始代码,它跳过了许多行。

For Each i In WSData.Range("A7", WSData.Range("A7").End(xlDown)).Cells If i.Offset(0, 3).Value >= 98 Then i.EntireRow.Delete End If Next 

而电子表格中的值只是带有%符号的十进制值。

在这里输入图像说明

我尝试“> 97.99”,因为Excel有浮点比较的一些问题,但它仍然不准确地比较。

以下是使用Selection.Value后显示的内容。 在这里输入图像说明

在这里输入图像说明

百分比是用整数描述的小数。 例如,100.00%存储为1,98.01%存储为.9801。

因此,您需要调整阈值:

 For Each i In WSData.Range("A7", WSData.Range("A7").End(xlDown)).Cells If i.Offset(0, 3).Value >= .98 Then i.EntireRow.Delete End If Next 

第二个问题是,删除行时最好向后迭代。 否则,它可能会遗漏一些行,因为每一行都被删除,它会向上移动,然后下一个迭代将跳过下一行。

改变我从一个范围到一个很长的时间,并使用这个:

 For i = WSData.Range("A7").End(xlDown).row to 7 Step -1 If WSData.Cells(i,3).Value >= .98 Then Row(i).Delete End If Next 

编辑:因为它出现数字格式的强制数字看起来像百分比的自定义掩码试试这个:

 For i = WSData.Range("A7").End(xlDown).row to 7 Step -1 If WSData.Cells(i,3).Value >= 98 Then Row(i).Delete End If Next 

如果这个工作,那么你的主要问题是,你在看D列。偏移量是叠加的。 所以当你使用.offset(0,3)它是从列A移动三列。1 + 3是4。