EXCEL中利用自定义函数实现“4舍6入”与有效数字相结合处理水文数据论文_孙坤

湖北省十堰市水文水资源勘测局湖北十堰442000

在各项水文数据计算与统计中,对数据精度和进位的要求与EXCEL软件中不一样,且不同的水文数据对有效数字位数的要求也不一样。直接在EXCEL中进行水文数据计算结果不符合国家标准及水文行业要求。通过在EXCEL中自定义函数可以实现“4舍6入”和有效数字的统一处理,便于利用EXCEL进行各项水文数据计算和统计。

通常在EXCEL中数据精度是按照保留“小数位数”即小数点后几位小数来对数据进行处理,进位函数为“4舍5入”;而水文数据处理中数据精度按照规范要求按照“有效数字”位数,小数点后位数不定,进位方法为“4舍6入”。通过在EXCEL中增加自定义函数JW(数值,保留有效数字位数,返回文本或数值)可对各类数字进行处理,方便快捷。JW函数与EXCEL中round函数进位对比表如下:

自定义函数具体操作步骤如下:一、在电子表格打开状态下按ALT+F11键,打开VBA编辑器;二、点击“插入”——“模块”菜单;三、在窗口中录入如下代码:

Function jw(Num As Double, DIG As Byte, Optional TorV As Boolean, Optional Way As Boolean, Optional Trn As Boolean) As Variant

Dim Temp1 As Double

Dim TFM As String

Dim Temp2 As String

Dim Tempoff As Double

If Num = 0 Then

Temp1 = 0

Temp2 = "0"

GoTo ExitFn

End If

With Application.WorksheetFunction

Tempoff = Abs((--Right(Num / 10 ^ (Int(.Log(Abs(Num))) - DIG + 1), 2) = 0.5) _

* ((--Right(Int(Abs(Num) / 10 ^ (Int(.Log(Abs(Num))) - DIG + 1)), 1) _

Mod 2) = 0)) * 10 ^ Int(.Log(Abs(Num)) - DIG + 1)

Temp1 = .Round(Abs(Num), -(Int(.Log(Abs(Num))) - DIG + 1))

Temp1 = Temp1 - Tempoff

Trn = Trn And Way And (10 ^ Int(.Log(Temp1)) = Temp1 And Temp1 > Abs(Num))

If DIG > 14 And Trn Then

Temp2 = "有效位数超过14位不能进位"

GoTo ExitFn

End If

If Way Then

If DIG = 1 And Int(.Log(Abs(Temp1))) = 0 And Not Trn Then

TFM = ""

Else

If Not (DIG = 1 And Int(Temp1) = Temp1 And Not Trn) Then TFM = TFM & "."

TFM = TFM & .Rept("0", DIG + Abs(Trn) - 1)

End If

TFM = "0" & TFM

If Int(.Log(Temp1)) < 0 Then

TFM = TFM & .Rept("0", -Int(.Log(Temp1)))

ElseIf Int(.Log(Temp1)) > 0 Then

TFM = TFM & "E+###"

End If

Else

TFM = "0"

If Not (Int(Temp1) = Temp1 And (Int(.Log(Temp1)) >= DIG - 1)) Then TFM = TFM & "." & .Rept("0", DIG - Int(.Log(Temp1)) - 1)

End If

Temp1 = Temp1 * Sgn(Num)

Temp2 = .Text(Temp1, TFM)

End With

ExitFn:

If TorV Then

jw = Temp2

Else

jw = Temp1

End If

End Function

四、保存并退出VBA编辑器,在当前电子表格中就可以直接使用JW函数了,使用方法与EXCEL中自带函数一样。如果需要在所有电子表中都能使用JW函数只需把当前工作表保存为EXCEL加载宏JW,再在EXCEL添加加载宏JW即可。

论文作者:孙坤

论文发表刊物:《工程管理前沿》2019年第04期

论文发表时间:2019/6/21

标签:;  ;  ;  ;  ;  ;  ;  ;  

EXCEL中利用自定义函数实现“4舍6入”与有效数字相结合处理水文数据论文_孙坤
下载Doc文档

猜你喜欢