excel - 如何使用 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 值?
解决方案
使用十进制(或货币):
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。
推荐阅读
- angular - 执行 ng build --prod 时出现“预期 1-3 个参数但得到 0”错误
- php - PHP - 在 php 控制器中获取另一个函数的变量
- php - laravel orm 更新文档
- angular - canActivate - 减慢应用程序的速度。什么时候调用它?
- android - 如果没有 @Inject 构造函数或 @Provides-annotated,则无法提供 ViewModel
- powershell - 授予“LogonAsAService”权限不响应
- python - pandas.dataframe 分组和转置
- acumatica - 无法覆盖采购订单屏幕中的取消订单按钮
- xml - 需要一个集合的分组解决方案
- google-sheets - 退出 Google 表格应用时公式消失?