Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Runden mit VBA vs. Rundungsfunktion in Excel

Runden mit VBA vs. Rundungsfunktion in Excel
14.02.2005 15:16:19
Bernd
Hallo Spezialisten,
ich möchte Euro-Werte (Ganze Zahlen) in Tausend-Euro-Werte per VBA umrechnen. Dabei ergeben sich Rundungsprobleme. VBA rundet anders als die übliche Funktion "Runden(Zahl;Anzahl_Stellen)".
(Auszug aus dem Code)
...
For Each cell In Selection
cell.Value = Round(cell.Value, 0)
Next
...
VBA-Ergebnisse:
102.500 = 102 (falsch)
105.500 = 105 (korrekt)
110.500 = 110 (falsch)
Hat jemand einen Tipp ?
Danke und Gruß
Bernd
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Runden mit VBA vs. Rundungsfunktion in Excel
Ute
versuchs mal so:
For Each cell In Selection
cell.Value = application.Round(cell.Value, 0)
Next
Ute
AW: Runden mit VBA vs. Rundungsfunktion in Excel
Bernd
sorry, habe mich beim zweiten Ergebnis vertippt (VBA-Ergebnis = 106 bzw. korrekt)
AW: Runden mit VBA vs. Rundungsfunktion in Excel
Galenzo
[b1]=Worksheetfunction.Ceiling([a1],1000)
entspricht der Funktiono =OBERGRENZE(..
Anzeige
AW: Runden mit VBA vs. Rundungsfunktion in Excel
Bernd
Vielen Dank an euch für die schnellen Tipps.
Das Problem liegt darin, dass die VBA-Vorgabe mathematisch rundet und die Excel-Funktion kaufmännisch. Application.round rundet leider anders als die normale Excel-Funktion.
Ich hab jetzt aber eine Lösung gefunden (mir ist das mal im Rahmen der Euro-Umstellung über den Weg gelaufen):
Public

Function Round(ByVal Number As Double, ByVal digits As Integer) As Double
Round = Int(Number * 10 ^ digits + 0.5) / 10 ^ digits
End Function

dies im Modul vorangestellt und dann gehts.
Gruß
Bernd
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Runden mit VBA und Excel Rundungsfunktion


Schritt-für-Schritt-Anleitung

Um Euro-Werte in Tausend-Euro-Werte in Excel mithilfe von VBA zu runden, kannst Du die folgenden Schritte befolgen:

  1. Öffne den Visual Basic Editor: Drücke ALT + F11, um den Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine_datei.xlsm)" und wähle "Einfügen" > "Modul".

  3. Gib den folgenden Code ein: Dieser Code sorgt dafür, dass die Werte korrekt gerundet werden.

    Function Round(ByVal Number As Double, ByVal digits As Integer) As Double
       Round = Int(Number * 10 ^ digits + 0.5) / 10 ^ digits
    End Function
  4. Verwende die Funktion in Deinem Arbeitsblatt: Schreibe in einer Zelle =Round(A1, 0), um den Wert in A1 auf die nächste ganze Zahl zu runden.

  5. Teste die Funktion: Überprüfe, ob die Rundung wie erwartet funktioniert.


Häufige Fehler und Lösungen

  • Falsches Rundungsergebnis: Wenn Du feststellst, dass VBA anders rundet als die Excel-Rundungsfunktion, liegt das daran, dass VBA standardmäßig mathematisch rundet, während Excel kaufmännisch rundet. Die Verwendung von Application.Round innerhalb einer Schleife kann helfen:

    For Each cell In Selection
      cell.Value = Application.Round(cell.Value, 0)
    Next
  • Meldung "Microsoft Visual Basic for Applications 400": Diese Fehlermeldung kann auftreten, wenn es Probleme im Code gibt. Überprüfe den Code auf Syntaxfehler oder fehlerhafte Variablen.


Alternative Methoden

Falls Du keine VBA-Lösungen verwenden möchtest, kannst Du auch die Excel-Rundungsfunktion nutzen. Zum Beispiel:

  • Kaufmännisches Runden: Verwende die Formel =RUNDEN(A1; 0) in der Zelle, um den Wert in A1 kaufmännisch zu runden.
  • Aufrunden auf die nächste Tausend: Nutze die Funktion =OBERGRENZE(A1; 1000).

Für VBA kannst Du auch WorksheetFunction.Ceiling verwenden:

b1 = WorksheetFunction.Ceiling(a1, 1000)

Praktische Beispiele

  1. Runden auf ganze Zahl:

    For Each cell In Selection
       cell.Value = Round(cell.Value, 0)
    Next
  2. Aufrunden auf 0,5: Um Werte auf 0,5 zu runden, kannst Du diese Formel verwenden:

    Function RoundToHalf(ByVal Number As Double) As Double
       RoundToHalf = Round(Number * 2, 0) / 2
    End Function
  3. Formatierung in Tausend Euro: Um Zahlen im Format Tausend Euro anzuzeigen, kannst Du das Zahlenformat in Excel wie folgt einstellen: Rechtsklick auf die Zelle > "Zellen formatieren" > "Zahl" > "Benutzerdefiniert" und dann #.##0,00 "€" eingeben.


Tipps für Profis

  • Fehlervermeidung: Teste Deinen VBA-Code schrittweise, um Fehler frühzeitig zu erkennen.
  • Dokumentation: Dokumentiere Deine VBA-Funktionen, um ihre Verwendung später zu erleichtern.
  • Verwende Debugging-Tools: Nutze die Debugging-Optionen im VBA-Editor, um Probleme schnell zu identifizieren.

FAQ: Häufige Fragen

1. Wie kann ich in Excel auf 0.5 runden? Du kannst eine benutzerdefinierte Funktion erstellen, die das Rundungsverhalten anpasst, um auf 0,5 zu runden.

2. Was ist der Unterschied zwischen kaufmännischem und mathematischem Runden? Kaufmännisches Runden rundet auf die nächste gerade Zahl, während mathematisches Runden immer auf die nächste Zahl auf oder ab rundet.

3. Wie kann ich Werte in Tausend Euro umrechnen? Verwende die Formel =A1/1000, um den Wert in A1 in Tausend Euro umzurechnen, und formatiere das Ergebnis entsprechend.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige