VBA自定义函数在水文数据四舍六入中的应用
《水文资料整编规范》SL247—1999自2000年1月1日起实施,标准中有关规定如下:水文资料整编成果中,各要素的取用精度位数后一位数字采用“四舍六入”法取舍,即取用精度位数后一位数字小于五者则舍,大于五者则入,等于五时若其后有非零尾数则入,无非零尾数则视取用的末位数字的奇偶取舍,为奇则进,为偶则舍。
然而,Excel内部并没有实现四舍六入的内置函数,因而,运用Excel处理的数据与执行四舍六入水文规范处理的数据将会有所出入,这在一定程度上降低了工作效率。由此考虑运用Excel内嵌的VBA创造宏代码,建立一个实现四舍六入功能的自定义函数,以扩展Excel电子表格的功能,借以完成对水文数据的特殊处理。
这里CnHUP提供一个简洁的VBA函数Round46来实现四舍六入功能,具体源代码如下:
'================================
' 四舍六入算法
'
'
'================================
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应用于水文工作,大大提高了水文资料整编工作的工作效率和精确度。


