在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位浮点错误。