比较两组数据,一个四舍五入到小数点后7位,另一个到8位

我正在比较两组数据。 我需要一些IF语句的帮助。 它看起来像这样:

 Sheets("sheet1").Select Dim cell As Range For Each cell In Range("A3:A200") If [condition1] And [condition2] And [condition3] And _ Worksheets("name1").Range("BE" & cell.row - 1) = Worksheets("name2").Range ("X" & cell.Row) Then [do code] Else [do something] End If ... Next 

大约有50个条件。 但是, "name1"表单在BE有8个小数位, "name2"表单在X有7个。 所以这是失败的。 我怎样才能解决这个问题?

有些东西是:

 IF Round(WorkSheets("name").Range("BE" & cell.row - 1) , 7) 

可以用来将小数点后8位的单元舍入到七位。 如果由于精度的原因,可能还是不匹配,则可以将每种情况四舍五入至小数点后6位(或5位或4位)。 这可能会降低精度,但会增加匹配的次数。

由于您正在testing两个浮点数之间的公平性,因此您可以一石二鸟,并使用epsilon比较而不是testing相等性:

 Const Epsilon As Double = 0.00000001 '... Dim cell As Range Dim value1 As Double, value2 As Double For Each cell In Range("A3:A200") value1 = Worksheets("name1").Range("BE" & cell.Row - 1) value2 = Worksheets("name2").Range("X" & cell.Row) If condition1 And condition2 And condition3 And _ (value1 - value2 < Epsilon) Then 'do code Else 'do something End If