Excel VBA自动四舍五入

时间:2017-09-05 07:53:58

标签: vba excel-vba excel

我正在尝试让vba计算某些值并仅在我的电子表格中显示答案。虽然这在大多数情况下工作正常,但对于我的一个答案,存在舍入错误。

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

这是我的公式:

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

我想这可能与声明变量有关,但对于所有其他公式,它工作正常。

由于

4 个答案:

答案 0 :(得分:1)

当您使用浮点数时,避免编程舍入错误的最佳方法是使用十进制转换。

在VBA中它看起来像这样:

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

.Net CDecdecimal的想法是避免浮点数的不准确性。 Why Are Floating Point Numbers Inaccurate?

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您的代码没有任何问题。因此代码将提供正确的结果。试试这段代码。

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

这会将正确的结果打印到立即窗口。 因此,错误是使用显示舍入结果的单元格的NumberFormat。检查数字格式。

答案 3 :(得分:0)

感谢所有回复。最后,添加Value2似乎可以解决问题。目前还不完全清楚为什么某些人没有小数问题而其他人没有。似乎只有公式为x-y的那个小数问题出现了。对于涉及除法和乘法的公式,没问题。