VBA-Funktionen Round, RoundUp und RoundDown
In this Article
VBA-Runden
Die VBA-Rundungsfunktion rundet Zahlen auf eine bestimmte Anzahl von Ziffern.
Syntax der VBA-Rundungsfunktion
Die Syntax der VBA Round-Funktion lautet:
Round(Ausdruck, [Dezimalstellen]) wobei:
- Ausdruck – Die zu rundende Zahl.
- Dezimalstellen (Optional) – Eine ganze Zahl, die die Anzahl der zu rundenden Dezimalstellen angibt. Der Wert muss größer als oder gleich 0 sein (>=0). Ist der Wert leer, wird der Standardwert 0 verwendet, d. h. die Funktion rundet auf die nächste Ganzzahl.
Schauen wir uns also ein Beispiel an, damit Sie sehen, wie die VBA-Funktion Round funktioniert, indem sie auf eine Dezimalstelle rundet:
Sub Runden1()
Msgbox Round(7.25, 1)
End Sub
Die resultierende MessageBox:
VBA Runden einer Variablen
Im obigen Beispiel haben wir die zu rundende Zahl direkt in die Funktion eingegeben. Normalerweise rundet man jedoch stattdessen eine Variable. Im Folgenden sehen Sie ein Beispiel, bei dem eine Variable verwendet wird:
Hinweis: Wir verwenden den Variablentyp Double, um dezimale Werte zu speichern.
Sub RundenMitVariablen()
Dim einheitenZaehlung As Double
einheitenZaehlung = 7.25
MsgBox "The value is " & Round(einheitenZaehlung, 1)
End Sub
Das Ergebnis ist:
VBA-Rundungsergebnisse
Tatsächliche Zahl | Anzahl der Dezimalstellen | Ergebnis |
---|---|---|
7.25 | 0 | 7 |
7.25 | 1 | 7.2 |
7.25 | 2 | 7.25 |
-7.25 | 1 | -7.2 |
-7.25 | 2 | -7.25 |
VBA Zellenwert runden
Sie können einen Zellenwert auch direkt in VBA runden:
Sub ZelleRunden()
Range("A1").Value = Round(Range("A1").Value, 2)
End Sub
VBA-Funktion RoundUp
Angenommen, Sie möchten eine Zahl mit VBA aufrunden. Dazu gibt es keine eingebaute VBA-Rundungsfunktion. Stattdessen können Sie die Excel-Arbeitsblattfunktion RoundUp in Ihrem VBA-Code aufrufen:
AufrundenEinheitenZaehlung = Application.WorksheetFunction.RoundUp(einheitenZaehlung, 3)
Die Arbeitsblattfunktionen von Excel können in VBA mit Hilfe des WorksheetFunction-Objekts verwendet werden . Die einzigen Arbeitsblattfunktionen, die Sie nicht aufrufen können, sind diejenigen, die bereits eine integrierte VBA-Äquivalente haben.
Eine Erinnerung an die Syntax der Excel-RoundUp-Arbeitsblattfunktion: ROUNDUP(Zahl, Ziffern) wobei:
- Zahl – Die Zahl, die Sie aufrunden möchten.
- Ziffern – Die Anzahl der Stellen, auf die Sie die Zahl runden möchten.
Schauen wir uns also ein Beispiel an, damit Sie sehen können, wie Sie in Ihrem VBA-Code auf die Arbeitsblattfunktion RoundUp zugreifen können:
Sub Aufrunden()
Dim einheitenZaehlung As Double
Dim AufrundenEinheitenZaehlung As Double
einheitenZaehlung = 7.075711
AufrundenEinheitenZaehlung = Application.WorksheetFunction.RoundUp(einheitenZaehlung, 4)
MsgBox "The value is " & AufrundenEinheitenZaehlung
End Sub
Das Ergebnis ist:
Aufrunden auf die nächsthöhere Ganzzahl
Sie können auf die nächste ganze Zahl aufrunden, indem Sie 0 als Anzahl der Dezimalstellen angeben:
Sub AufrundenGanzzahl()
MsgBox Application.WorksheetFunction.RoundUp(7.1, 0)
End Sub
Das Ergebnis liefert:
RoundUp Funktion Ergebnisse
Tatsächliche Zahl | Ziffern | Ergebnis |
---|---|---|
7.075711 | 0 | 8 |
7.075711 | 1 | 7.1 |
7.075711 | 2 | 7.08 |
7.075711 | 3 | 7.076 |
7.075711 | -1 | 10 |
7.075711 | -2 | 100 |
7.075711 | -3 | 1000 |
VBA-Funktion RoundDown
Nehmen wir an, Sie möchten eine Zahl mit VBA abrunden. Auch hier gibt es keine eingebaute VBA-Abrundungsfunktion. Stattdessen müssen Sie die Excel-Arbeitsblattfunktion RoundDown in Ihrem VBA-Code aufrufen.
Eine Erinnerung an die Syntax der Excel-Arbeitsblattfunktion RoundDown: ROUNDDOWN(Zahl, Ziffern) wobei:
- Zahl – Die Zahl, die Sie abrunden möchten.
- Stellen – Die Anzahl der Stellen, auf die Sie die Zahl abrunden möchten.
Schauen wir uns also ein Beispiel an, damit Sie sehen, wie Sie in Ihrem VBA-Code auf die Arbeitsblattfunktion RoundDown zugreifen können:
Sub Abrunden()
Dim einheitenZaehlung As Double
Dim abrundenEinheitenZaehlung As Double
einheitenZaehlung = 5.225193
abrundenEinheitenZaehlung = Application.WorksheetFunction.RoundDown(einheitenZaehlung, 4)
MsgBox "The value is " & abrundenEinheitenZaehlung
End Sub
Das Ergebnis ist:
Abrunden auf die nächste Ganzzahl
Sie können auf die nächste Ganzzahl abrunden, indem Sie 0 als Anzahl der Dezimalstellen angeben:
Sub AbrundenGanzzahl()
MsgBox Application.WorksheetFunction.RoundDown(7.8, 0)
End Sub
Das Ergebnis ist:
RoundDown Funktion Ergebnisse
Tatsächliche Zahl | Ziffern | Ergebnis |
---|---|---|
5.225193 | 0 | 5 |
5.225193 | 1 | 5.2 |
5.225193 | 2 | 5.22 |
5.225193 | 3 | 5.225 |
5.225193 | -1 | 0 |
5.225193 | -2 | 0 |
5.225193 | -3 | 0 |
Andere VBA-Rundungsfunktionen
VBA Ceiling – Aufrunden auf eine angegebene Signifikanz
Wenn Sie also eine Zahl auf die nächste Ganzzahl oder auf das nächste angegebene Vielfache der Signifikanz aufrunden möchten, können Sie die Excel-Arbeitsblattfunktion Ceiling.Math in Ihrem VBA-Code aufrufen.
Eine Erinnerung an die Syntax der Excel-Arbeitsblattfunktion Ceiling.Math:
CEILING.MATH(Zahl, [Signifikanz], [Modus]) wobei:
- Zahl – Die Zahl, die Sie aufrunden möchten.
- Signifikanz (Optional) – Das Vielfache, auf das die Zahl gerundet werden soll.
- Modus (Optional) – Legt fest, ob negative Zahlen auf Null oder von Null weg gerundet werden sollen.
Schauen wir uns also ein Beispiel an, damit Sie sehen können, wie Sie in Ihrem VBA-Code auf die Arbeitsblattfunktion Ceiling.Math zugreifen können:
Sub AbrundenBisSignifikanz()
Dim einheitenZaehlung As Double
Dim ceilingmathEinheitenZaehlung As Double
einheitenZaehlung = 4.1221
ceilingmathEinheitenZaehlung = Application.WorksheetFunction.Ceiling_Math(einheitenZaehlung, 5)
MsgBox "The value is " & ceilingmathEinheitenZaehlung
End Sub
Das Ergebnis ist:
VBA RoundUp auf angegebene Signifikanz Ergebnisse
Tatsächliche Zahl | Signifikanz | Modus | Ergebnis |
---|---|---|---|
4.1221 | 5 | ||
4.1221 | 3 | 6 | |
4.1221 | 50 | 50 | |
-4.1221 | 3 | -3 | |
-4.1221 | 3 | -1 | -6 |
VBA Floor – Abrunden auf eine angegebene Signifikanz
In VBA gibt es auch keine entsprechende Floor.Math-Funktion. Aber auch hier gilt: Wenn Sie eine Zahl auf die nächste Ganzzahl oder auf das nächste angegebene Vielfache der Signifikanz abrunden möchten, können Sie die Excel-Arbeitsblattfunktion Floor.Math von VBA aus aufrufen.
Eine Erinnerung an die Syntax der Excel-Arbeitsblattfunktion Floor.Math:
FLOOR.MATH(Zahl, [Signifikanz], [Modus]) wobei:
- Zahl – Die Zahl, die Sie abrunden möchten.
- Signifikanz (Optional) – Das Vielfache, auf das die Zahl gerundet werden soll.
- Modus (Optional) – Legt fest, ob negative Zahlen auf Null oder von Null weg gerundet werden sollen.
Schauen wir uns also ein Beispiel an, damit Sie sehen, wie Sie in Ihrem VBA-Code auf die Arbeitsblattfunktion Floor.Math zugreifen können:
Sub AbrundenBisSignifikanz()
Dim einheitenZaehlung As Double
Dim floormathEinheitenZaehlung As Double
einheitenZaehlung = 4.55555559
floormathEinheitenZaehlung = Application.WorksheetFunction.Floor_Math(einheitenZaehlung, 2)
MsgBox "The value is " & floormathEinheitenZaehlung
End Sub
Das Ergebnis ist:
VBA RoundDown auf angegebene Signifikanz Ergebnisse
Tatsächliche Zahl | Signifikanz | Modus | Ergebnis |
---|---|---|---|
4.55555559 | 4 | ||
4.55555559 | 3 | 3 | |
4.55555559 | 50 | 0 | |
-4.55555559 | 3 | -6 | |
-4.55555559 | 3 | -1 | -3 |