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

Forumthread: Kürzen in VBA

Kürzen in VBA
12.12.2012 14:25:32
Tobias
Hallo!
Ich habe mein eine Frage.
Ich habe bspw. den Mittelwert 3.448. Dieser soll als ganze Zahl ausgewiesen werden, dann kommt 4 raus.
Ich möchte nun, dass nur ab der ersten Nachkommastelle gerundet wird. Also 3.4 womit 3 rauskommen würde.
Dafür gibt es eigentlich die Funktion Kürzen (engl. trunc()). Diese existiert aber in VBA nicht. Abrunden bringt mir leider nichts, weil dann Mittelwerte von 3.999 auf 3 abgerundet würden. Int bringt mir auch nichts, weil ich noch die Möglichkeit haben möchte die Werte mit einer Stelle nach dem Komma auszuweisen.
Hat jemand eine Idee wie ich über VBA eine Dezimalzahl an einer beliebigen Stelle abschneiden kann.
VG und danke schonmal!
Tobi

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Kürzen in VBA
12.12.2012 14:31:41
Daniel
Hi
die Formel fürs runden in VBA ist Round(3.445, 0) oder WorksheetFunction.Round(3.445, 0)
hier wird auch immer nur die Stelle vor dem Rundungswert betrachtet.
Gruß Daniel

Dein Fktsspektrum ist ja ...
12.12.2012 14:34:49
Luc:-?
…wohl recht eingeengt, Tobi,
und davon, dass diese Fktt idR mehr als nur 1 Argument haben, hast du wohl auch noch nichts gehört.
Mit der WorksheetFunction- bzw Application-Methode kannst du etliche xlStandardFktt unter VBA verwenden. Außerdem gibt's noch die vbFkt Round, die allerdings symmetrisch rundet, was für wt- u.statistische Zwecke ohnehin zu empfehlen ist. Die hat ebenfalls ein 2.Argument, mit dem man die gewünschten Dezimalstellen angeben kann.
Gruß Luc :-?

Anzeige
Evtl. per EVALUATE()
12.12.2012 14:44:27
NoNet
Hallo Tobi,
in VBA kannst Du auf einige der Tabellenblattfunktionen zugreifen, indem Du die Methode Application.WorksheetFunction verwendest. Die Funktion KÜRZEN() / TRUNC() ist hier allerdings ausgespart.
Alternativ kannst Du mit EVALUATE() auch direkt einen funktionsterm eingeben :
MsgBox EVALUATE("Trunc(3.456,2)") ergibt z.B. 3,45
Mit Round(EVALUATE("Trunc(3.456,2)"),0) kannst Du diesen gekürzten Wert wiederum runden.
Gruß, NoNet

Anzeige
AW: Evtl. per EVALUATE()
13.12.2012 09:19:23
Tobias
Hallo!
Danke für die ausführlichen Antworten! Ich werde es gleich mal mit Evaluate versuchen!
VG
Tobi
Anzeige
Anzeige

Infobox / Tutorial

Kürzen von Zahlen in VBA: So geht's


Schritt-für-Schritt-Anleitung

Um in Excel VBA eine Dezimalzahl an einer bestimmten Stelle abzuschneiden, kannst Du die EVALUATE()-Methode verwenden. Hier ist eine einfache Anleitung:

  1. Öffne deinen VBA-Editor (drücke ALT + F11).

  2. Füge ein neues Modul hinzu.

  3. Verwende den folgenden Code, um eine Zahl zu kürzen:

    Sub ZahlenKürzen()
       Dim gekürzteZahl As Double
       gekürzteZahl = Application.Evaluate("Trunc(3.456, 1)")
       MsgBox gekürzteZahl
    End Sub
  4. Ändere die Zahl oder die Anzahl der Nachkommastellen nach Bedarf.

  5. Führe das Makro aus, um das Ergebnis zu sehen.

Mit dieser Methode kannst Du die Funktion vba trunc nutzen, um die Nachkommastellen abzuschneiden.


Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich" beim Ausführen des Codes.

    • Lösung: Stelle sicher, dass Du den Code in einem Modul und nicht in einem Arbeitsblatt oder einer UserForm verwendest.
  • Fehler: Das Ergebnis ist nicht wie erwartet.

    • Lösung: Überprüfe die Eingabewerte und stelle sicher, dass Du die richtige Anzahl an Dezimalstellen angegeben hast.

Alternative Methoden

Eine weitere Möglichkeit, Zahlen in Excel zu kürzen, ist die Verwendung der Round-Funktion. Du kannst die Funktion so anwenden:

Sub ZahlenRunden()
    Dim gerundeteZahl As Double
    gerundeteZahl = Round(3.456, 1)
    MsgBox gerundeteZahl
End Sub

Hierbei wird die Zahl auf eine Dezimalstelle gerundet. Beachte, dass Round die Zahl symmetrisch rundet, was für statistische Zwecke sinnvoll sein kann.


Praktische Beispiele

  1. Kürzen einer Zahl auf zwei Nachkommastellen:

    Sub BeispielKürzen()
       Dim zahl As Double
       zahl = Application.Evaluate("Trunc(5.6789, 2)")
       MsgBox "Gekürzte Zahl: " & zahl
    End Sub
  2. Runden einer Zahl auf eine Nachkommastelle:

    Sub BeispielRunden()
       Dim zahl As Double
       zahl = Round(5.6789, 1)
       MsgBox "Gerundete Zahl: " & zahl
    End Sub

Mit diesen Beispielen kannst Du sowohl zahlen kürzen excel als auch das Runden von Werten effizient umsetzen.


Tipps für Profis

  • Nutze die WorksheetFunction-Methode, um auch andere Excel-Funktionen in VBA zu verwenden.
  • Achte darauf, dass die Trunc-Funktion in VBA nicht direkt verfügbar ist, daher ist EVALUATE() eine nützliche Alternative.
  • Wenn Du häufig mit Dezimalzahlen arbeitest, erstelle eine Funktion, die das Kürzen oder Runden automatisiert, um Zeit zu sparen.

FAQ: Häufige Fragen

1. Kann ich die Trunc-Funktion in Excel VBA direkt verwenden? Nein, die Trunc-Funktion ist in VBA nicht direkt verfügbar. Du kannst jedoch die EVALUATE()-Methode verwenden, um sie zu nutzen.

2. Wie kann ich in VBA eine Zahl auf eine bestimmte Anzahl von Nachkommastellen kürzen? Verwende die EVALUATE()-Methode mit dem Trunc-Befehl, um die gewünschte Anzahl an Nachkommastellen abzuschneiden.

3. Gibt es eine einfache Möglichkeit, eine Zahl in Excel zu runden? Ja, Du kannst die Round-Funktion in VBA verwenden, um eine Zahl auf die gewünschte Anzahl von Nachkommastellen zu runden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige