2017-09-05 77 views
0

我想让vba计算出某些值,并只在我的电子表格中显示答案。虽然这在大多数情况下工作正常,但我的答案之一是四舍五入错误。Excel VBA自动舍入

在相关单元而不是显示12,950.2217,它只显示12,950.9200。

这是我的公式:

Sheet2.Cells(i, 19).Value = Sheet2.Cells(i, 6).Value - Sheet2.Cells(i, 18).Value 

我想这可能是与声明变量,但所有其他的公式是工作的罚款。

感谢

回答

1

,以避免在编程舍入误差的最佳方式,当您使用浮点数的工作,是使用十进制转换。

在VBA它应该是这样的:

cells(1,1) = CDec(cells(2,1))-CDec(cells(3,1)) 

CDecdecimal的想法是,它避免了浮点数的误差。 Why Are Floating Point Numbers Inaccurate?

+1

尽管浮点数不准确,但减去两个数字似乎不太可能导致大约0.7的错误,如原始文章中所述。还有一些其他的错误...... – Noceo

0

我怀疑你的单元格应用了货币格式。使用Value2而不是Value

Sheet2.Cells(i, 19).Value2 = Sheet2.Cells(i, 6).Value2 - Sheet2.Cells(i, 18).Value2 
0

没有什么不对您的代码。因此代码将提供正确的结果。试试这个代码。

With Sheet2.Rows(i) 
    Debug.print .Cells(19).Value = .Cells(6).Value - .Cells(18).Value 
End With 

这会将正确的结果打印到立即窗口。 因此,该错误与单元格的NumberFormat显示舍入结果。检查号码格式。

0

感谢您的所有答复。最后,增加Value2似乎解决了这个问题。目前还不完全清楚为什么有些人没有小数点问题,而另一些人则没有。似乎只有在公式为x - y时出现小数点问题的那个。对于涉及分割和乘法的公式,它是可以的。