ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 19286|回复: 53

[分享] 按四舍六入五留双的规则进行有效数字修约

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2017-9-4 19:56 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如题,分享一个按四舍六入五留双的规则进行有效数字修约的自定义函数,献给广大的E友。
经本人测试,基本上达到完美的标准了。




补充内容 (2017-9-19 20:58):
在7楼还有一个能自动设置格式的,给有需要的朋友们,希望多提反馈意见。

补充内容 (2017-9-30 19:34):
13楼的附件是对7楼的改进,需要的朋友请直接到13楼下载。

保留有效数字.rar

10.06 KB, 下载次数: 1078

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-9-4 20:24 | 显示全部楼层
精典的案例,谢谢分享!

TA的精华主题

TA的得分主题

发表于 2017-9-4 20:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-9-4 21:52 | 显示全部楼层
请测试!
Function Yround(c, Optional d% = 0)             '兼修约规则的四舍六入五成双法和数值修约截取位数的函数(特定场合法)

    On Error Resume Next
    If c = "" Then Exit Function
    c = CDec(c)
    X = Abs(c) + 10 ^ -99
    X = Int(-Log(X) / Log(10#))
    d = d + X
    m = 10 ^ d
    Yround = Round(c, d)
    Yround = Format(Yround, Left(0.1 / m, d + 2))
    If d < 1 Then Yround = Round(c * m, 0) / m
    If Mid(Yround, 3, 3) = "357" Then Yround = "参数溢出"
    'If c = "" Then Yround = ""
   
End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-5 21:01 | 显示全部楼层
YZC51 发表于 2017-9-4 21:52
请测试!
Function Yround(c, Optional d% = 0)             '兼修约规则的四舍六入五成双法和数值修约截 ...

不是很明白您的函数的用途,例如:Yround(10.85,3)返回的结果为10.81;Yround(10.85,4)返回的结果为10.851?

TA的精华主题

TA的得分主题

发表于 2017-9-5 21:24 | 显示全部楼层
现在上传文件,请老师测试
保留有效数字.rar (14.13 KB, 下载次数: 91)

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-19 20:51 | 显示全部楼层
再分享一个能自动设置格式的。

保留有效数字-自动设置格式.rar

15.7 KB, 下载次数: 372

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-19 20:54 | 显示全部楼层
本帖最后由 三流高手 于 2017-9-19 21:05 编辑

将代码拷贝到自己工作簿中的相应位置,就可以感受这个自定义函数的好处了。
有很多朋友都提出过类似的需求,即:既要四舍六入,舍入后遇到尾数为零的,还能自动以“0”补齐位数。

TA的精华主题

TA的得分主题

发表于 2017-9-20 00:08 | 显示全部楼层
三流高手 发表于 2017-9-19 20:54
将代码拷贝到自己工作簿中的相应位置,就可以感受这个自定义函数的好处了。
有很多朋友都提出过类似的需求 ...

据说银行有4舍6入5留双的需求.    您写的这函数,  我对保留位数有疑问,比如保留4位    12.345的结果是12.34             123.45的结果是123.4    结果都是4位数字    但是小数位一个是2位,一个是1位   感觉保持小数位数一样是否更加合适?

TA的精华主题

TA的得分主题

发表于 2017-9-20 09:46 | 显示全部楼层
“四舍六入五留双”规则的目的是减少“四舍五入”的误差,和银行没有直接关系。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-5 12:04 , Processed in 0.043815 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表