在VBA中舍入到最接近的较大整数
我试图计算商品堆叠的层数。我有一个可变数量( iQty
),一个给定的加载dRTW
宽度( dRTW
),一个商品的宽度( dWidth
)和一个数量( iLayerQty
)。
每层的数量计算为iLayerQty = Int(dRTW/dWidth)
现在我需要把总数量除以每层的数量并且四舍五入。 在Excel公式中很容易,但我试图避免WorksheetFunction调用,以尽量减lessA1 / R1C1混淆。 目前我正在用这个来逼近它:
(Number of layers) = ((Int(iQty / iLayerQty) + 1)
而且大多数情况下都能正常工作 – 除非数字给出一个整数(货物宽度为0.5米,例如安装在2.5米的拖车上)。 当然,在这些情况下,添加一个就会导致结果。
是否有任何方便的方法来调整公式,以获得更好的向上舍入?
我没有看到任何理由来避免WorksheetFunction
; 这里我没有看到任何混乱。
Number_of_layers = WorksheetFunction.RoundUp(iQty / iLayerQty, 0)
你也可以推出你自己的function:
Function RoundUp(ByVal Value As Double) If Int(Value) = Value Then RoundUp = Value Else RoundUp = Int(Value) + 1 End If End Function
像这样调用它:
Number_of_layers = RoundUp(iQty / iLayerQty)
如果使用WorksheetFunction对象访问ROUNDUP或CEILING函数不在表格中,则可以通过一些math来实现。
Number of layers = Int(iQty / iLayerQty) - CBool(Int(iQty / iLayerQty) <> Round(iQty / iLayerQty, 14))
VBA True在math上使用时等于(-1)。 VBA回合是为了避免15位浮点错误。