停止 excel(或 VBA)四舍五入的小数

Posted

技术标签:

【中文标题】停止 excel(或 VBA)四舍五入的小数【英文标题】:Stop excel (or VBA) rounding decimals 【发布时间】:2016-10-04 12:09:32 【问题描述】:

我有一个 VBA 宏在单元格上执行一些操作。出于某种原因,其中一些四舍五入到小数点后两位,而我想要整数(小数点后五位)。我得到 0,13 而不是 0,1319:

Cells(rowWhere2Write + 2, 4).Value = Worksheets(originalSheet.Name).Cells(r, "AA").Value2 - Cells(rowWhere2Write + 4, 11)

在 Worksheets(originalSheet.Name).Cells(r, "AA").Value2 我得到这个值:0,1319 €(是的,它是货币格式,即使我只对 0,1319 感兴趣)。

为什么要四舍五入到小数点后两位?我怎样才能得到 4-5 个小数而不是两个?

有没有办法获得 5 位小数并用欧元货币格式化我的新单元格?到目前为止,我已经尝试过,但我也将数字截断为两位小数。

谢谢

【问题讨论】:

我建议您在所有情况下都使用Value2 而不是Value(或省略它),然后将您想要的Numberformat 分配给单元格。 我试过这个: Cells(rowWhere2Write + 2, 4).NumberFormat = "0.00000" Cells(rowWhere2Write + 2, 4).Value2 = Worksheets(originalSheet.Name).Cells(r, "AA").Value2 - Cells(rowWhere2Write + 4, 11).Value2 但我只得到 0,13000,不能得到 0,1319。改变指令的顺序会让我得到同样的结果。 Cells(rowWhere2Write + 2, 4).Value 也是同样的结果。我可以尝试什么? 这两个单元格的值到底是多少? 啊,我明白了。事实证明,对于缺少的确切值,有一个减法运算使单元格恰好为 0,13 .. 真是巧合哈哈。谢谢 【参考方案1】:

这是 NumberFormat 的问题... 试试 selection.NumberFormat=""

如果 € 对您很重要,请尝试 selection.NumberFormat="0.00????€"(如果您愿意,可以更多?)

【讨论】:

你能说得更具体点吗?检查下面的评论,我无法让它工作。 您的单元格包含 0.13 并且您需要更改提供此代码的代码,或者它包含 0.1319 但显示 0.13 并且 selection.NumberFormat="0.00??€" 将起作用... 啊,我明白了。事实证明,对于缺少的确切值,有一个减法运算使单元格恰好为 0,13 .. 真是巧合哈哈。谢谢

以上是关于停止 excel(或 VBA)四舍五入的小数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中优雅地格式化字符串,使其四舍五入到小数点后 6 位,并修剪额外的 '0' 或 '9'

excel整数时不显示小数点

Excel求和,小数点四舍五入问题

VBA 舍入问题

VBA里怎么把Double类型保留1位小数,不四舍五入,如3.7777=3.7 ,456.666=456.6

java保留小数点后四舍五入的问题