ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索

[原创] 数字修约——四舍六入五单双自定义函数Round2

已有 2397 次阅读2004-12-7 18:40 |个人分类:原创

 'ROUND2(Ref1-数值,Ref2-保留有效位数,Ref3-返回文本或数值,Ref4-遇进位时增加有效位开关)

 

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


Dim Temp1 As Double
Dim TFM As String
Dim Temp2 As String
Dim Tempoff As Double


'-----------------------------------------------
' 鉴于vba中的round与工作表的round不同,这里
' 使用工作表中的round,因为vba中的round有问
' 题。vba中特别同时保留两个round应该是有目的吧,
' 其他函数或操作符一般只有一个
'-----------------------------------------------#此前在首页部分显示#
    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 (10 ^ Int(.Log(Temp1)) = Temp1 And Temp1 > Abs(Num))
       
        If DIG > 14 And Trn Then
            Temp2 = "有效位数超过14位不能进位"
            GoTo ExitFn
        End If
       
        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
       
        Temp1 = Temp1 * Sgn(Num)
        Temp2 = .Text(Temp1, TFM)
    End With
       
ExitFn:
        If TorV Then
           Round2 = Temp2
        Else
           Round2 = Temp1

        End If
End Function

http://blog.excelhome.net/UploadFiles/2006-2/23890517.rar


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 免费注册

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-21 08:52 , Processed in 0.032937 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

返回顶部