停止 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'