比较两组数据,一个四舍五入到小数点后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