Auf die nächste höhere Ganzzahl in VBA aufzurunden

8

Ich versuche zu berechnen, auf wie viele Ebenen eine Ware gestapelt wird. Ich habe eine variable Menge ( iQty ), eine gegebene Breite für die Ladefläche ( dRTW ), eine Breite pro Einheit für die Ware ( dWidth ) und eine Menge pro Layer ( iLayerQty ).

Die Menge pro Schicht wird als iLayerQty = Int(dRTW/dWidth)

berechnet

Jetzt muss ich die Gesamtmenge durch die Menge pro Schicht teilen und aufrunden. In einer Excel-Formel wäre es einfach, aber ich versuche, WorksheetFunction-Aufrufe zu vermeiden, um A1 / R1C1-Verwirrung zu minimieren. Im Moment approximiere ich es mit diesem:

%Vor%

Und das funktioniert gut das meiste der Zeit - außer wenn die Zahlen eine ganze Zahl geben (eine Frachtbreite von beispielsweise 0,5 m, die auf einen 2,5 m Rolltrailer passt). In diesen Fällen ruiniert natürlich das Hinzufügen das Ergebnis.

Gibt es irgendeine praktische Möglichkeit, diese Formel zu optimieren, um eine bessere Aufwärtsrundung zu erhalten?

    
Andrew Perry 02.03.2016, 12:12
quelle

2 Antworten

11

Ich sehe keinen Grund, WorksheetFunction zu vermeiden; Ich sehe hier keine Verwirrung.

%Vor%

Sie können auch Ihre eigene Funktion rollen:

%Vor%

Nennen Sie es so:

%Vor%     
D_Bester 02.03.2016, 12:24
quelle
6

Wenn Sie ein WorksheetFunction-Objekt verwenden, um auf ROUNDUP oder CEILING Funktion ist aus dem Tisch, dann kann das gleiche mit etwas Mathematik erreicht werden.

%Vor%

Ein VBA True ist das Äquivalent von (-1), wenn es mathematisch verwendet wird. Die VBA-Runde ist da, um 15-stellige Fließkommafehler zu vermeiden.

    
Jeeped 02.03.2016 12:33
quelle

Tags und Links