您现在的位置:资料下载 > 建筑工程材料检测数据的数值修约在excel中的实现
|
建筑工程材料检测数据的数值修约在excel中的实现
|
作者: 发布于:2017/6/19 17:08:33
文字:【大】
【中】
【小】
|
Microsoft excel 是微软公司开发的办公软件microsoft office的重要组件之一。Excel 由于具有强大的数据处理功能,在工程类日常应用非常广泛。而在技术资料的数据处理当中,经常要对数值进行修约以达到要求的精度。而excel中却没有提供专门的数值修约函数,只能对数值按“四舍五入”规则进行处理,而工程数据处理一般都是对结果按规范进行数值修约,用人工进行修约,繁琐而且易出错。 利用excel强大的数据处理功能,专门编制了能够在excel中直接对数值进行修约的函数以及在宏中的实现。
数值修约国家标准规范GB/T 8170-2008《数值修约规则与极限数值的表示和判定》对数值修约的进舍规则如下: 1)拟舍弃数字的最左一位数字小于5时,则舍去,即保留的各位数字不变。 2)拟舍弃数字的最左一位数字大于5,或则是5,而且后面的数字并非全部为0时,则进1,即保留的末位数加1。 3)拟舍弃数字的最左一位数字为5,而后面无数字或全部为0时,若所保留的末位数为奇数(1,3,5,7,9)则进1,为偶数(2,4,6,8,0)则舍弃。 4)负数修约时,取绝对值按照上述1~3规定进行修约,再加上负号 5)0.2单位修约或者0.5单位修约时,分别将拟修约数值X乘以5、乘以2,按指定修约间隔按5X、2X进行修约,所得数值再除以5、除以2。 从以上修约规则可以看出,对于正整数修约到1的情况,数值修约规则与excel提供的Round函数的唯一区别在于,当拟修约值个位数为偶数而且拟舍弃数字刚好为0.5时,按Round函数修约的个位数有进1,而按GB/T 8170-2008修约规则进行修约的,个位数没有进1。按照这种情况,我们只需要挑出这种特殊情况,其它情况都可以按照Round函数进行“四舍五入”。假设需要修约至Y,Y值为修约间隔与单位修约的乘积,如我们通常说的修约至5,即是修约间隔为10,按0.5单位修约。函数运算的框架图如下, 根据上述流程,给出能够在excel 中实现数值修约的自编函数如下: =IF(AND(MOD(ABS(A1/Y),1)=0.5,MOD(INT(ABS(A1/Y)),2)=0),ROUNDDOWN(A1/Y,0)*Y,ROUND(A1/Y,0)*Y) A1为待修约数值所在excel的单元格的位置,Y为我们需要修约至的数值。 本函数通过把拟修约数A1除以需修约至的数Y简化成整数修约至1的问题,修约结果再乘以Y以得到正确的修约数值,符合0.2单位修约和0.5单位修约原则的精神。函数具体分析如下: 1)ABS(A1/Y)是对A1/Y进行取绝对值,确保函数在负数的情况下判断是正确的; 2)MOD是除余函数,MOD(a,b),返回a除以b的余数。MOD(ABS(A1/Y),1)=0.5判断拟舍弃数字是否为Y/2, MOD(INT(ABS (A1/Y)),2)=0判断拟保留数字是否为偶数; 3)AND是并列条件函数,AND(条件1,条件2,……),表示括号内的所有条件都为真时才为真,AND(MOD(ABS(A1/Y), 1)=0.5,MOD(INT(ABS(A1/Y)),2)=0)判断拟保留数字是否为偶且拟舍弃数字是否为Y/2; 4)ROUNDDOWN是向绝对值小的舍去,ROUNDDOWN(A1/Y,0)*Y即是直接舍弃拟舍弃数字; 5)ROUND函数是对数字绝对值进行“四舍五入”进行运算,ROUND(A1/Y,0)*Y是按“四舍五入”的原则的拟修约数进行取值; 6)IF是条件语句,IF(逻辑条件,条件为真时返回值,条件为假时返回值),本函数的逻辑为判断拟保留数字为偶数,且拟舍弃数字刚好为Y/2两个条件都成立时,直接舍弃拟舍弃数字,否则按“四舍五入”进行计算保留。 编写VBA函数 打开模块代码编写窗体。方法为:选择“工具”菜单下的“宏”,再选择visual basic编辑器,在visual basic编辑器界面中,选择“插入”菜单中的“模块”命令,即出现模块代码编辑器,随后编辑器里输入如下代码: Public Function gbxy(a As Double, b As Double) x = Abs(Round(a / b, 13)) Select Case x - Int(x) Case Is = 0.5 If Int(x) / 2 = Int(Int(x) / 2) Then gbxy = Int(x) * b * a / Abs(a) Else gbxy = Round(a / b, 0) * b End If Case Else gbxy = Round(a / b, 0) * b End Select End function 输入完毕后,选择“文件”菜单中的“关闭并返回到 Microsoft excel”命令,代码即被保存,函数编写完成。 这样,可以和excel自带的函数一样使用国标修约gbxy函数了,例如拟修约A1单元格,修约至5,可在某单元格输入=gbxy(A1,5),修约至0.2,则在单元格输入=gbxy(A1,0.2),本函数适用于正负数的修约以及0.2和0.5单位修约的情况,完全能够满足GB/T 8170-2008数值修约的要求。
|