この質問は C++ 言語について既に尋ねられていますが、VBA の関数が必要です。C++ 関数を VBA に変換しようとしましたが、正しい値が返されません。
次のことを行う関数が必要です。
RoundUp(23.90, 5)
'return 25
RoundUp(23.90, 10)
'return 30
RoundUp(23.90, 20)
'return 40
RoundUp(23.90, 50)
'return 50
RoundUp(102.50, 5)
'return 105
RoundUp(102.50, 20)
'return 120
これが私がこれまでに持っているものです。ほとんどの場合は機能しますが、倍数より 0.5 未満の数値に対しては正しくない値を返します。したがって、問題は、剰余値の計算方法に関する丸めの問題のようです。
Public Function RoundUp(dblNumToRound As Double, lMultiple As Long) As Double
Dim rmndr As Long
rmndr = dblNumToRound Mod lMultiple
If rmndr = 0 Then
RoundUp = dblNumToRound
Else
RoundUp = Round(dblNumToRound) + lMultiple - rmndr
End If
End Function
例えば:
RoundUp(49.50, 50)
'Returns 49.50 because rmndr = 0