如何使用excel VBA round()?

Tin*_*ing 11 excel vba excel-vba

我有以下数据:

cell(1,1) = 2878.75
cell(1,2) = $31.10
cell(2,1) = $89,529.13
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用时round(cells(1,1).value*cells(1,2).value),2),结果不匹配cell(2,1).我认为它与舍入问题有关,但我只是想知道是否有可能round()采取正常行动.也就是说,为了value > 0.5,向上舍入.为了value < 0.5,向下舍入?

Ale*_* K. 16

VBA使用银行家四舍五入,试图弥补总是向上或向下四舍五入的偏差.你可以改为;

WorksheetFunction.Round(cells(1,1).value * cells(1,2).value, 2)
Run Code Online (Sandbox Code Playgroud)


小智 9



试试这个功能,可以整理一个双倍

'---------------Start -------------
Function Round_Up(ByVal d As Double) As Integer
    Dim result As Integer
    result = Math.Round(d)
    If result >= d Then
        Round_Up = result
    Else
        Round_Up = result + 1
    End If
End Function
'-----------------End----------------
Run Code Online (Sandbox Code Playgroud)


Ste*_*pha 9

如果要向上舍入,请使用半调整.将0.5添加到要舍入的数字并使用INT()函数.

答案= INT(x + 0.5)

  • 对于已经是圆形的数字不起作用.例如`Round(41.0 + 0.5)`将导致'42`. (2认同)
  • @MCL '42' 不是正确答案吗?有什么问题? (2认同)
  • 不知道我在想什么。意思是说使用 INT() 函数,而不是 Round() 函数。 (2认同)