我的电子表格中的以下行失败:
Cells(21, 7).Formula = "=IF(OR(ABS(F21-B21)>C21+0.0001,F21=""""),""NG"","""")"
我正在比较两个数字,当F21-B21 = C21时,以下代码显示NG。添加0.0001意味着缓解此错误,但它不起作用。
我相信这是因为Excel可能不是将C21视为一个确切的数字(即0.08),而是将其视为0.0834892379或其他一些长数字。
这可能吗?或者,还有什么可能是错的?如果需要任何其他信息,请告诉我。
我想检查的不平等是:
ABS(F21-B21)> = C21
M.W。
答案 0 :(得分:2)
要测试两个值是否与epsilon值相等,您可以减去这些值,然后将它们与epsilon进行比较:
Cells(21, 7).Formula = "=IF(OR(ABS(F21-B21-C21)<0.0001,F21=""""),""NG"","""")"
如果您打算测试ABS(F21-B21)
是否等于C21
,请使用
Cells(21, 7).Formula = "=IF(OR(ABS(ABS(F21-B21)-C21)<0.0001,F21=""""),""NG"","""")"
要比较epsilon中的ABS(F21-B21)> = C21,您可以将差值与负值epsilon进行比较:
Cells(21, 7).Formula = "=IF(OR((ABS(F21-B21)-C21)>=-0.0001,F21=""""),""NG"","""")"
或者,您可以对结果进行舍入。例如,要测试它是否在5位小数之内是> = C21:
Cells(21, 7).Formula = "=IF(OR(ROUND(ABS(F21-B21),5)>=C21,F21=""""),""NG"","""")"