ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何按数字修约的规则进位?

如何按数字修约的规则进位?

作者:绿色风 分类: 时间:2022-08-17 浏览:160
楼主
syz105729913
Q:如何按数字修约的规则进位?
A:利用VBA中的ROUND()函数,VBA中的规则刚好就是数字修约的规则,自定义一个函数,首先ALT+F11插入一个模块,复制以下代码

  1. Function AA(Y As Range, I As Integer) As String
  2. AA = Round(Y.Value, I)
  3. End Function
然后,在单元格中输入公式=AA(引用的单元格,保留的小数位数),示例附件如下:

示例.rar
2楼
toby08
有一个疑问,为什么这个函数得出的结果是文本格式的呢?
3楼
syz105729913
那是因为Function AA(Y As Range, I As Integer) As String
的缘故,String表示文本的意思
4楼
rongjun
Q:如何按照四舍六入五单双的规则修约数值?

 
A:采用如下自定义函数:

  1. Function roundx(R, Optional N As Long = 0)
  2.     roundx = VBA.Round(R * 10 ^ N, 0) / 10 ^ N
  3. End Function
R为需要修约的数值(可以是数字、单元格引用、表达式)
N为指定位数(默认为0;当N>0时,修约到指定的小数位;当N=0时,修约到最接近的整数;当N<0时,在小数点左侧进行修约)

注意:四舍六入五单双的规则如下:
四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一。


如何按照四舍六入五成双规则修约数值?.rar
5楼
hlxz
为什么用函数 =ROUND(A5*10^2,0)/10^2  就不能**则
不符合

欢乐小爪  19:29:21
你的vba 也是VBA.Round(R * 10 ^ N, 0) / 10 ^ N
虫儿飞   19:29:35
两个函数的修约规则不一样
虫儿飞   19:29:46
不知道微软是什么意思。
欢乐小爪  19:30:06
vba 的Round
和函数的Round
不一样!


请问微软是什么意思。
6楼
syz105729913
微软是什么意思我们也不知道,只能太概的猜测,可能是对修约的一个补充吧
VBA里的ROUND函数就是四舍六入五单双的修约规则。
7楼
baoying19891207
楼主软件还有缺陷,比如 0.575 正确档案应该为0.57 但是公式计算后为0.57

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap