首页 > 解决方案 > 如何使用 VBA 将 2 位数字舍入

问题描述

我想将一个数字从一个工作表复制到另一个工作表。复制的数字可能在小数点后多于 2 位。我正在使用这段代码:

Dim MyLimit As Single
MyLimit = Round(Worksheets("Sheet1").Range("Y1").Value, 2)
Debug.Print MyLimit
Worksheets("Sheet2").Range("AB2") = MyLimit

Debug.Print 显示 0,93。

单元格 AB2 的值显示“0,930000007152557”。

如何在单元格 AB2 中获得正确的 0,93 值?

标签: excelvbanumber-formatting

解决方案


使用十进制(或货币):

Dim MyLimit As Variant
    
MyLimit = CDec(Round(Worksheets("Sheet1").Range("Y1").Value, 2))

但是,Round它有很多错误,并且还执行银行家四舍五入,这可能不是您想要的。执行正常4/5 舍入的一种简单方法是使用Format

Dim MyLimit As Variant

MyLimit = CDec(Format(Worksheets("Sheet1").Range("Y1").Value, "0.00"))

对于扩展和/或极端舍入,请研究VBA.Round


推荐阅读