精华内容
下载资源
问答
  • Round in Oracle/VBA

    2014-11-17 18:36:00
    VBARound采用的是银行家算法(rounds to the nearest even number) Round(1.5) = 2 Round(0.5) = 0 在Oracle中实现银行家算法 SQL> create or replace function bankers_round (val number, rnd_digit ...

    VBA Round采用的是行家算法(rounds to the nearest even number

    Round(1.5) = 2

    Round(0.5) = 0

    在Oracle中实现银行家算法

    SQL> create or replace function bankers_round (val number, rnd_digit number := 0) return number is

    2 v_rnd_digit number;

    3 v_remainder number;

    4 begin

    5 v_rnd_digit := trunc(rnd_digit);

    6

    7 v_remainder := (val - trunc(val,v_rnd_digit)) * power(10,v_rnd_digit + 1);

    8

    9 if Abs(v_remainder) < 5

    10 or (Abs(v_remainder) = 5 and mod(trunc(val * power(10,v_rnd_digit)),2) = 0) then

    11 return trunc(val,v_rnd_digit);

    12 else

    13 return round(val,v_rnd_digit);

    14 end if;

    15 end;

    16 /

     

    SQL> select Bankers_Round(-123.45, 1) from dual;

     

    BANKERS_ROUND(-123.45,1)

    ------------------------

    -123.4

     

    SQL> select Bankers_Round(-123.55, 1) from dual;

     

    BANKERS_ROUND(-123.55,1)

    ------------------------

    -123.6

     

    SQL> select Bankers_Round(-123.65, 1) from dual;

     

    BANKERS_ROUND(-123.65,1)

    ------------------------

    -123.6

     

    SQL> select Bankers_Round(-123.75, 1) from dual;

     

    BANKERS_ROUND(-123.75,1)

    ------------------------

    -123.8

    在VBA中实现普通的四舍五入

    Round(12.45+0.000000001,1)

    http://blogs.msdn.com/b/ericlippert/archive/2003/09/26/bankers-rounding.aspx

    转载于:https://www.cnblogs.com/teamleader/p/4104163.html

    展开全文
  • 转载自:http://www.educity.cn/office/7090.htmlExcel中VBARound 函数与工作表Round 函数的区别是什么浏览:1306|更新:2015-09-19 14:302015-09-18更新 此答案由站在风中的女子提供1VBARound函数与工作表的...

    转载自:http://www.educity.cn/office/7090.html

    Excel中VBA 的Round 函数与工作表Round 函数的区别是什么

    浏览:1306|更新:2015-09-19 14:30
    2015-09-18更新 此答案由站在风中的女子提供1
    • VBA的Round函数与工作表的Round函数均为四舍五入函数,两个函数的语法相同,但有着很大的不同,其主要区别如下:

      1:VBA的Round函数的第二个参数可省略,当省略时,表示返回整数。工作表的Round函数不可省略。

      2:VBA的Round函数的第二参数不可为负数。工作表的Round函数的第二个参数可以为负数,当为负数时,表示向小数点左边取保留位数

      3:工作表Round函数进行四舍五入时,将查看保留位数的后一位数字,该数字大于或等于5时,则进1,反之不进位。而VBA的Round函数规则如下:

      当保留位数的后一位数字大于5时,进位

      当保留位数的后一位数字小于5时,不进位

      当保留位数的后一位数字为5时,若该位之后存在任何大于0的数,进位

      当保留位数的后一位数字为5时,若该位之后的数为0且保留位的数字为奇数时,进位

      当保留位数的后一位数字为5时,若该位之后的数为0且保留位的数字为偶数时,不进位

      运用上述规则,若计算表达式Round(Number.2)的值时,随着Number的数值不同,结果如下:

    • '===========================================================
    • 博主PS:
    •     因为我们的科学计算统计要求是按照“GB/T8170-2008《数值修约规则与极限数值的表示和判定》”的规定进行四舍六入五取单双,

    • 所以,以前在excel里面找到的Round函数是明显用不成的,而且当时头脑短路,没有想起来试试VBA里面的这个Round函数,后来朋友告知才仔细测试了一下,果然,VBA里面的Round函数就是我需要的四舍六入五取单双!!! 因为以前没有想到用VBA里面这个Round,所以,当时我自己专门写了一个函数做这个四舍六入五取单双用:
    • Function CRound(cr As Double, Optional dc As Integer = 0) As Double
      Dim ts As String, Tsi As String, Tsis As String
      Dim Tsis5 As String, Tsii As Integer, Tsii5 As Integer
      Dim ci As Double, m As Double, i As Integer
          ci = cr
          m = 1
          For i = 1 To dc
              m = m * 10 
          Next
          ci = ci * m
          ts = "   " & CStr(ci * 10)
          If InStr(ts, ".") > 0 Then
              Tsi = Mid(ts, InStr(ts, ".") - 1, 1)
              Tsis = Mid(ts, InStr(ts, ".") + 1)
              Tsis5 = Mid(ts, InStr(ts, ".") - 2, 1)
          Else
              Tsi = Right(ts, 1)
              Tsis = ""
              Tsis5 = Left(Right(ts, 2), 1)
          End If
          Tsii = Val(Tsi)
          If Tsii <= 4 Then '四舍六入,五取单双
      CRound = Int(Val(Str(ci)))
          ElseIf Tsii > 5 Then
      CRound = Int(Val(Str(ci))) + 1
          Else
              If Len(Tsis) > 0 Then
      CRound = Int(Val(Str(ci))) + 1
              Else
                  Tsii5 = Val(Tsis5)
                  If (Tsii5 Mod 2) = 0 Then
      CRound = Int(Val(Str(ci)))
                  Else
      CRound = Int(Val(Str(ci))) + 1
                  End If
              End If
          End If
          CRound = CRound / m
      End Function
      现在看来不再需要这个我自己写的复杂函数了,内容改成下面这样简单的即可:

             

    Function CRound(cr As Double, Optional dc As Integer = 0) As Double
    	CRound = Round(cr, dc)
    End Function

        当然,貌似asp round也是和VBA的规则一样,也就用不到我写的那个复杂的Cround了。

    此记!


    展开全文
  • VBA基础语法:取整函数

    千次阅读 2020-01-07 21:31:03
    VBA取整函数有好几个,用法也不同,有的还可以在工作表中使用,下面根据需求分别说明: 1、四舍五入取整,一般用于取近似数 (1)CInt:只能在VBA...(2)Round:在VBA中使用和CInt相同 Round(12.56)=13, Roun...

    VBA取整函数有好几个,用法也不同,有的还可以在工作表中使用,下面根据需求分别说明:

    1、四舍五入取整,一般用于取近似数

    (1)CInt:只能在VBA中使用

    CInt(12.56)=13,

    CInt(12.46)=12,

    CInt(-12.56)=-13,

    CInt(-12.46)=-12

    (2)Round:在VBA中使用和CInt相同

    Round(12.56)=13,

    Round(12.46)=12,

    Round(-12.56)=-13,

    Round(-12.46)=-12,

    此函数实际上有两个参数,第二个参数表示取小数的位数,或略表示取整,即小数位数为0。该函数还可以在工作表中使用,使用时两个参数必须写全,即:

    Round(12.56,0)=13,

    Round(12.56,1)=12.6


    2、取整数部分,小数舍弃,常用于取整数和余数
    (1)Fix:只能在VBA中使用

    Fix(12.56)=12,

    Fix(12.46)=12,

    Fix(-12.56)=-12,

    Fix(-12.46)=-12

    (2)Int:在VBA和工作表中都可以使用

    此函数取正数时和Fix相同,负数时往绝对值高的方向取,就是说,取小于其值得整数, 

    Int(12.56)=12,

    Int(12.46)=12,

    Int(-12.56)=-13,

    Int(-12.46)=-13

    举例:买50个鸡蛋,12个鸡蛋一盒,那么需要Fix(50/12)=4盒,零头50 mod 12=2个

    3、往上取整,只要有小数,整数部分就加1

    Ceiling函数可以实现这个功能,Ceiling(12.01,1)=13,第二个参数1表示舍入到最近的整数。VBA中可以用下列方式引用:

    a = Application.Ceiling(12.06, 1)         'a=13

    Ceiling函数功能比较复杂,这儿就不详细介绍了。

    4、关于Round函数进行四舍五入

    VBA中Round函数进行四舍五入并不是逢5就入,例如:

    round(0.5)=0、 round(1.5)=2 、 round(2.5)=2 、round(3.5)= 4 、round(4.5)=4 ,难到还分奇偶?答案是确实分奇偶,在VBA中Round函数是采用“银行家舍入”,建议大家在VBA中慎重使用Round函数来四舍五入。什么是“银行家舍入”呢,定义如下:
    “四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一”。这个四舍五入法是一个国际标准,大部分的编程软件都使用的是这种方法,据说国际上一般都是用这种方法的。
    如果在Excel VBA中进行四舍五入处理,也可以直接调用Excel工作表函数,达到直接四舍五入的目的Application.Round(A,B),例如,下面例句可以看出运行效果:
        a = Application.Round(12.5, 0)  'a=13
        b = Round(12.5)                        'b=12
    ————————————————
    版权声明:本文为CSDN博主「宋哥」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/iamlaosong/article/details/49333779

    展开全文
  • 分享成果,随喜真能量。大家好,今日内容仍是和大家分享VBA编程中常用的简单“积木”过程代码,... 如何利用VBA代码,判断是否为数值VBA过程代码172:如何利用VBA代码,求四舍五入的值Sub mynz() MsgBox "VBA:Round...

    2a0c562194d1095ea00e324631d6c195.png

    分享成果,随喜真能量。大家好,今日内容仍是和大家分享VBA编程中常用的简单“积木”过程代码,这些内容大多是取至我编写的“VBA代码解决方案”教程中内容。NO.168-NO.169内容是:

    NO. 172:如何利用VBA代码,求四舍五入的值

    NO. 如何利用VBA代码,判断是否为数值

    6ce7ed992e8c4a4d4638636619eac80c.png

    VBA过程代码172:如何利用VBA代码,求四舍五入的值

    Sub mynz()

    MsgBox "VBA:Round(4.5)=" & Round(4.5) & Chr(13) & "EXCEL:Round(4.5)=" _

    & Application.Round(4.5, 0) & Chr(13) & "VBA修正:Round(4.5)=" & Round(4.500001)

    End Sub

    代码的解析说明:Mynz过程分别调用VBA内置的Round函数和工作表Round函数在消息框中显示两者运算结果 .

    be7216fbc1eb89719a8c518eeb578e16.png

    VBA过程代码173:如何利用VBA代码,判断是否为数值

    Sub mynz()

    Dim i As Integer

    Dim n As String

    Dim s As String

    With Sheets("55")

    For i = 1 To .Range("A65536").End(xlUp).Row

    If IsNumeric(.Cells(i, 1)) Then

    n = n & .Cells(i, 1).Address(0, 0) & Chr(9) & .Cells(i, 1) & Chr(13)

    Else

    s = s & .Cells(i, 1).Address(0, 0) & Chr(9) & .Cells(i, 1) & Chr(13)

    End If

    Next

    End With

    MsgBox "A列中数值单元格:" & Chr(13) & n & Chr(13) _

    & "A列中非数值单元格:" & Chr(13) & s

    End Sub

    代码的解析说明:Mynz过程使用IsNumeric函数判断工作表的A列单元格是否为数值,并使用消息框显示。代码将数值单元格的地址和数值保存在变量 e中。将非数值单元格的地址和内容保存在变量 s中。在保存时插入制表符对数据列进行分隔,使之排列整齐.

    b65e570dddc38af2e3b568e8e667cbdd.png

    VBA是实现自己小型办公自动化的有效手段,我根据自己20多年的VBA实际利用经验,现推出了四部VBA教程,这些是我多年编程经验的记录,也是我“积木编程”思想的体现。每一讲都是较大块的“积木”,可以独立的完成某些或者某类的过程,有需要的朋友可以联络(WeChat:NZ9668)分享。利用这些可以提高自己的编程效率。其一:“VBA代码解决方案”PDF教程,是VBA中各个知识点的讲解,覆盖了绝大多数的知识点,是初学及中级以下人员必备;其二“VBA数据库解决方案”PDF教程,数据库是数据处理的利器,对于中级人员应该掌握这个内容了。其三“VBA数组与字典解决方案”PDF教程,讲解VBA的精华----字典,是我们打开思路,提高代码水平的必备。其四“VBA代码解决方案”视频教程。目前正在录制,“每天20分钟,半年精进VBA”,越早参与,回馈越多。现在录制到第三册的99讲。

    展开全文
  • 扫码关注1. 写在前面在往期文章不怕一亿,就怕一分:让我们从小数位数说起里,我们...其中有一段 VBA 代码,今天我们就来讲一讲这段代码,算是我们后续 VBA 之路的一个起点。2. 原始代码Sub cmdRound() Dim Rng As...
  • VBA研究】取整函数的使用

    万次阅读 2015-10-22 16:45:38
    作者:iamlaosong VBA取整函数有好几个,用法也不同,有的还可以在工作表中使用,下面根据需求分别说明: 1、四舍五入取整,一般用于取近似数 (1)CInt:只能在VBA中...(2)Round:在VBA中使用和CInt相同,Round(1
  • vba自定义功能函数

    千次阅读 2013-06-16 10:36:48
    财务金额小写转大写: 1 先在vbe里新建模块,并写入...y = Int(Round(100 * Abs(M)) / 100) j = Round(100 * Abs(M) + 0.00001) - y * 100 f = Round((j / 10 - Int(j / 10)) * 10) A = IIf(y b = IIf(j > 9.4
  • =IF(ROUND(A1,2)<0,"金额为负无效",IF(ROUND(A1,2)=0,"零元",IF(ROUND(A1,2)<1,"",TEXT(INT(ROUND(A1,2)),"[dbnum2]")&"元")&IF(INT(ROUND(A1,2)*10)-INT(ROUND(A1,2))*10=0,IF(INT(ROUND(A1,2))*(INT...
  • VBA_批量调整图片宽度

    千次阅读 2017-04-09 15:54:58
    '版心尺寸大小(假设 Word 2003 中,A4纵向纸张,宽度已知是21厘米,左边距2.5厘米,右边距2.5厘米,所以,版心尺寸=宽度-左边距-右边距=16厘米) ... Width = Round(ActiveDocument.PageSetup.PageWidth / 28.35)
  • VBA自定义函数集锦[2]

    2008-02-27 17:11:00
    #小写转大写的函数 FunctionDX(M) '将小写数字转化为大写金额 ...y=Int(Round(100*Abs(M))/100) j=Round(100*Abs(M)+0.00001)-y*100 f=Round((j/10-Int(j/10))*10) A=IIf(y<1,"",Application...
  • EXCEL随机数据 使用 单元格表达式 以及 Excel VBA 快速生成随机数据。使用单元格表达式(函数)在指定范围产生随机整数、小数、大小写英文字符、字符串、随机日期和随机时间,并设定输出的时间格式和日期格式。产生...
  • 我在想是否有可能VBA来计算,然后把这些信息,这样当我在一个细胞,我看到这些信息。 细胞本身会举行不同的值… 例如: .Cells.Value = Round((ds.Cells(x, 57).Value _ / ds.Cells(x, 40).Value) * 100, 0) &...
  • 任务描述 1、效果图 2、功能描述 (1)MyTab选项卡-&gt;Opposite按键:将选中单元格的数值变为相反数 ...Round(Percentile)按键:将选中...Round(Integer)按键:将选中单元格的数值四舍五入保留整数,数值采用...
  • 数字取整可以用下述函数完成:四舍五入取整 =ROUND(A1,0)截去小数取整=ROUNDDOWN(A1,0) =FLOOR(A1,1) =TRUNC(A1)截去小数取整为最接近的偶数 =EVEN(A1)截去小数向上取整数 =CEILING(A1,1)截去小数向下取整 =INT(A1) ...
  • 一、函数介绍1.ROUND、ROUNDUP、ROUNDDOWN函数这三个函数的用法已经在前面文章中介绍过,大家可以参考下面这篇文章。Excel取舍函数ROUND2.INT函数其作用是向下舍入为最接近的整数。基本语法为=INT(数值)示例:=INT...
  • 很早就知道VB中的round跟excel函数的效果...看完这张图,你是不是以为 VB6和VBARound函数遇5时奇进偶退,末位凑成偶数 再看这张,你是不是看见有两个调皮鬼,一个叫1.245,一个叫2.345 你知道为什么呀 
  • 票据打印有一个关键的技术,那就是“数字转大写金额”。当然,解决的办法很多,这里我转载一个自定义函数,处理起来非常简单。Function dxje(Q)ybb = Round(Q * 100)y = Int(ybb / 100)j...
  • 1、EXCEL数据的单元格四舍六入(不启用VBA宏) 保留三位小数的四舍六入,在单元格内输入或拷贝: =TEXT(IF(ISEVEN(TRUNC(E510^ 3)),IF(ROUND(E510^ 3-TRUNC(E5*10^3),3)>0.5,ROUNDUP(E5,3),ROUNDDOWN(E5,3)),...
  • 测量数据经常涉及到银行家舍入问题,而在...这里提供一个vba编程的简单办法实现银行家舍入功能: 把函数添加到自带函数中Public Sub addfuntion()Application.MacroOptions macro:="mathround", Description:= _"银行
  • <div><p>MCVEs: <pre><code>vb 'This causes Parse Error, because 0 parameter) Debug.Print Now _ () 'This causes Parse Error, because > 1 parameter) ...rubberduck-vba/Rubberduck</p></div>
  • 2020-08-07

    2020-08-07 23:38:45
    Excel函数——小数点计算 动作目标:比较“误差值”和“中测计算的误差”是否相等?如果不相等把这两个值自动标红!...于是写了VBA代码等等等最终。。。。发现小数点放至20位发现了问题 **解决办法:**round函数 ...
  • Inno Setup Installer Script

    2020-12-30 03:18:58
    <div><p>Round 2 - Fight! <p>So I have taken on board the comments from the previous Pull Request and revised my submission. I removed the existing installer projects and added a script to build a ...
  • FMLDATA的源码

    2014-06-02 15:57:42
    value=round(value,0.001); run; filename fmlfile; %mend fmldata2sasdata; %fmldata2sasdata(C:\DZH2\,000001,5438,DAY,work.t);/*参数分别为:DZH安装目录,股票代码,序列编号,分析周期,目标表*/ 5、用其它...
  • $percent - round($choice[$i]/$choice_count*10000)/100; print("<tr><td>$choicetext[$i]:</td>"); print("<td>$percent %</td></tr> "); } print("</table></...
  • Development ideas

    2020-12-28 16:04:02
    ve not got round to it yet. <p>I know nothing about java and am not a trained programmer but am happy to try to help out (day-job workload permitting) if you're keen. Alternately if the changes ...
  • Mail comes into the VBA or BVA P.O. Box. Employees in Janesville upload the mail in the Mail Portal. If the mail is for BVA, BVA employees process it in the following way: - Mail supervisor assigns ...
  • VBSCRIPT中文手册

    热门讨论 2010-11-12 10:13:06
    Round 函数 返回指定位数、四舍五入的数。 RTrim 函数 返回去掉尾部空格的字符串副本。 ScriptEngine 函数 返回表示正在使用中的脚本语言的字符串。 ScriptEngineBuildVersion 函数 返回使用中的脚本引擎的编译...
  • vb Script参考文档

    2009-07-28 22:13:02
    Round 函数 返回指定位数、四舍五入的数。 RTrim 函数 返回去掉尾部空格的字符串副本。 ScriptEngine 函数 返回表示正在使用中的脚本语言的字符串。 ScriptEngineBuildVersion 函数 返回使用中的脚本引擎的编译...
  • VBSCRIP5 -ASP用法详解

    2010-09-23 17:15:46
    通过对信息进行分组,...Round 函数 返回指定位数、四舍五入的数。 运行时错误 VBScript 运行时错误列表. RTrim 函数 返回去掉尾部空格的字符串副本。 ScriptEngine 函数 返回表示正在使用中的脚本语言的字符串。 ...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

roundvba