我正在尝试让vba计算某些值并仅在我的电子表格中显示答案。虽然这在大多数情况下工作正常,但对于我的一个答案,存在舍入错误。
在相关单元格中,而不是显示12,950.2217,它只显示12,950.9200。
这是我的公式:
Sheet2.Cells(i, 19).Value = Sheet2.Cells(i, 6).Value - Sheet2.Cells(i, 18).Value
我想这可能与声明变量有关,但对于所有其他公式,它工作正常。
由于
答案 0 :(得分:1)
当您使用浮点数时,避免编程舍入错误的最佳方法是使用十进制转换。
在VBA中它看起来像这样:
cells(1,1) = CDec(cells(2,1))-CDec(cells(3,1))
.Net 中CDec
或decimal
的想法是避免浮点数的不准确性。 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的那个小数问题出现了。对于涉及除法和乘法的公式,没问题。