excel中的不平等在平等时失败

时间:2017-11-09 21:55:36

标签: excel excel-vba excel-formula inequality vba

我的电子表格中的以下行失败:

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。

1 个答案:

答案 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"","""")"