Excel四舍六入公式-自定义VBA函数

Excel中使用内置工作表函数进行四舍六入处理相对来说比较繁琐,我们可以使用VBA来创建自定义四舍六入函数 。
在Excel中,按 Alt F11 打开 Visual Basic 编辑器,然后单击“插入”>“模块” 。新模块窗口显示在 Visual Basic 编辑器的右侧 。将以下代码复制并粘贴到新模块:
Function cfr(x, y)
cfr = Round(x, y)
End Function
上面的代码中,VBA的ROUND函数的功能是将x四舍六入到y位小数 。回到工作表界面,就可以在表格中使用刚才的自定义函数了 。
对于特定的某些数字 , 比如2.0045修约到3位小数,以上的自定义函数不能得出正确的结果,我们添加另一个VBA函数:
Function cfrs(x, y)
d = x * 10 ^ y
s = Format(d, "0." & String(15, "0"))
p = InStr(s, ".")
If Right(s, 15) = "5" & String(14, "0") Then
If InStr("02468", Mid(s, p - 1, 1)) > 0 Then
d = d - 0.1 * Sgn(x)
Else
d = d0.1 * Sgn(x)
End If
End If
【Excel四舍六入公式-自定义VBA函数】cfrs = Round(d) / 10 ^ y
End Function
这个函数通过将数字转换成字符,再按照修约规则进行判断,对诸如2.0005修约成3位小数这些特定数值也能得出正确的结果 。
如果再尝试将MOD(2.0045*1000,2)修约成整数,上面的自定义函数相应语句可以作如下修改:
s = Format(d, "0." & String(8, "0"))
p = InStr(s, ".")
If Right(s, 8) = "5" & String(7, "0") Then
由于Excel数字存储与运算精度限制 , 在使用以上公式时对结果的正确性应该进行必要的检查 。
前面创建的自定义函数只能在当前工作簿中使用,要在不同的工作簿中引用,可以将当前工作簿以Excel加载宏的形式另存到AddIns文件夹中,并在Excel选项里加载项中勾选加载 。

相关经验推荐