VBA自定义函数在水文数据四舍六入中的应用

分类:代码, 博客 标签:

水文资料整编规范》SL247—1999自2000年1月1日起实施,标准中有关规定如下:水文资料整编成果中,各要素的取用精度位数后一位数字采用“四舍六入”法取舍,即取用精度位数后一位数字小于五者则舍,大于五者则入,等于五时若其后有非零尾数则入,无非零尾数则视取用的末位数字的奇偶取舍,为奇则进,为偶则舍。

然而,Excel内部并没有实现四舍六入的内置函数,因而,运用Excel处理的数据与执行四舍六入水文规范处理的数据将会有所出入,这在一定程度上降低了工作效率。由此考虑运用Excel内嵌的VBA创造宏代码,建立一个实现四舍六入功能的自定义函数,以扩展Excel电子表格的功能,借以完成对水文数据的特殊处理。

这里CnHUP提供一个简洁的VBA函数Round46来实现四舍六入功能,具体源代码如下:

'================================
' 四舍六入算法
'
' http://cnhup.com
'================================
Function Round46(AValue As Double, n As Integer) As Double
    Dim tmpValue As Double
    Dim tmpLong As Long
    
    tmpValue = AValue * 10 ^ n
    tmpLong = CLng(Val(tmpValue))
    Round46 = tmpLong / (10 ^ n)
End Function

利用CLng函数建立的“规范修约”VBA函数Round46应用于水文工作,大大提高了水文资料整编工作的工作效率和精确度。



分类:代码, 博客 标签:

发表评论

You must be logged in to post a comment.