我想让vba计算出某些值,并只在我的电子表格中显示答案。虽然这在大多数情况下工作正常,但我的答案之一是四舍五入错误。Excel VBA自动舍入
在相关单元而不是显示12,950.2217,它只显示12,950.9200。
这是我的公式:
Sheet2.Cells(i, 19).Value = Sheet2.Cells(i, 6).Value - Sheet2.Cells(i, 18).Value
我想这可能是与声明变量,但所有其他的公式是工作的罚款。
感谢
我想让vba计算出某些值,并只在我的电子表格中显示答案。虽然这在大多数情况下工作正常,但我的答案之一是四舍五入错误。Excel VBA自动舍入
在相关单元而不是显示12,950.2217,它只显示12,950.9200。
这是我的公式:
Sheet2.Cells(i, 19).Value = Sheet2.Cells(i, 6).Value - Sheet2.Cells(i, 18).Value
我想这可能是与声明变量,但所有其他的公式是工作的罚款。
感谢
,以避免在编程舍入误差的最佳方式,当您使用浮点数的工作,是使用十进制转换。
在VBA它应该是这样的:
cells(1,1) = CDec(cells(2,1))-CDec(cells(3,1))
的CDec
或decimal
在净的想法是,它避免了浮点数的误差。 Why Are Floating Point Numbers Inaccurate?
我怀疑你的单元格应用了货币格式。使用Value2
而不是Value
:
Sheet2.Cells(i, 19).Value2 = Sheet2.Cells(i, 6).Value2 - Sheet2.Cells(i, 18).Value2
没有什么不对您的代码。因此代码将提供正确的结果。试试这个代码。
With Sheet2.Rows(i)
Debug.print .Cells(19).Value = .Cells(6).Value - .Cells(18).Value
End With
这会将正确的结果打印到立即窗口。 因此,该错误与单元格的NumberFormat显示舍入结果。检查号码格式。
感谢您的所有答复。最后,增加Value2似乎解决了这个问题。目前还不完全清楚为什么有些人没有小数点问题,而另一些人则没有。似乎只有在公式为x - y时出现小数点问题的那个。对于涉及分割和乘法的公式,它是可以的。
尽管浮点数不准确,但减去两个数字似乎不太可能导致大约0.7的错误,如原始文章中所述。还有一些其他的错误...... – Noceo