VBA Aufrunden, Abrunden in Access oder Excel

Das Aufrunden, abrunden und runden von ganzen Zahlen (z.B. auf volle 10er, 100er) ist in VBA für MS Access oder Excel immer ein wichtiges Instrument für Controller und VBA Entwickler.

VBA Aufrunden, Abrunden in Access oder Excel

Beispiel-Funktion: Runden in Excel auf volle EUR Beträge

Lemma

Generell sollten Sie folgende Regeln beim Runden beachten:

Runden Sie Ihre Excel-Zahlen so spät wie möglich. Bei mehrmaligem Runden in verschiedenen Excel-Zellen oder mit Zwischenwerten können Sie u.U. die Zahl nicht mehr nachvollziehen (klassischer Fehler von Schülern) bei der Summation Ihrer Ergebnisse.

Achten Sie auf die Genauigkeit.

Nicht nur für Naturwissenschaftler gilt folgende Regel beim Auf- und Abrunden:

Die Anzahl der gültigen Dezimalen einer Näherung liefert eine Schätzung für die Schranke des absoluten Fehlers (und zwar die Hälfte der n-ten Stelle). Die Anzahl der wesentlichen geltenden Ziffern einer Zahl liefert eine grobe Schätzung für die Schranke des relativen Fehlers. Und Näherungswerte (Runden auf eine vorgegebene kleinere Anzahl von Dezimalen) werden durch das Rechnen mit Excel nicht genauer!

VBA Aufrunden, Abrunden in Excel

In Excel per VBA aufrunden bzw. abrunden gibt es verschiede Lösungsansätze. Die einfache Rundungsfunktion in Excel finden Sie hier: Excel-Runden

Häufig wird die application-Methode verwendet:

Beispiel:

application.worksheetfunction.round(945,-3) :  Ergebnis 1000
oder
application.worksheetfunction.round(880,-2):  Ergebnis  900

oder direkt mit

WorksheetFunction.Round("19,5", 0)

Eine flexiblere Möglichkeit ist die Verwendung einer eigenen VBA-Funktion, die ebenfalls für MS Access verwendet werden kann.

 

VBA Aufrunden, Abrunden für MS Access

In einem VBA-Modul in MS Access könnte die Funktion wie folgt aussehen:

Public Function Runden(ByVal Number As Double, ByVal Digits As Integer) As Double
Runden = Int(Number * 10 ^ Digits + 0.5) / 10 ^ Digits
End Function

Die Nutzung der VBA-Funktion folgt:

X = Runden("26,5",0)

Vorteil dieser Funktion ist u.a. dass hier auf volle Zahlen (z.B. aufrunden auf volle 10 EUR oder 100 EUR Beträge) gerunden werden kann.

 runden(149.99,-2)  = 100 : Abrunden auf volle 100 EUR
 runden(150.99,-2)  = 200 : Aufrunden auf volle 100 EUR.

Wenn der Betrag auf z.B. 1000 EUR gerundet werden soll, so ist die Zahl mit -3 zu ersetzen.

Runden für SQL-Server

Ist die MS Access Datenbank auf einen SQL-Server aufgesetzt, z.B. wie bei unserer MS Access Urlaubsdatenbank, so sollte die Rundungsfunktion direkt auf dem SQL-Server mittels einer Abfrage stattfinden.

Die SQL-Syntax ist die ROUND Funktion.

SELECT ROUND(Spaltenname1,Dezimalstellen nach dem Komma) FROM Tabellenname

 

Beispiel:

SELECT ROUND(123.4545, 2) = 123.45

Oder

SELECT ROUND(123.45, -2) = 100.00

Das Prinzip mit den Nachkomma-Stellen ist wie oben beschrieben.

Um "Überlauffehler" zu vermeiden, muss ggf. der Datentyp umgewandelt werden. Eine Beispiel SQL könnte wie folgt aussehen:

SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3);

Beispiele diese Rundungsfunktion und MariaDB, MSSQL und MYSQL finden Sie bei der Fremdwährungsumrechnung von Dienstreise-Online.de

 

|

 
Kontakt