Ich habe ich mehreren Spalten Beträge stehen, welche als Text mit vier Kommastellen formatiert sind.
Ich möchte diese Spalten jetzt mittels VBA in eine Zahl mit 2 Kommastellen umwandeln.
Wie würde hier bitte eine VBA Lösung aussehen?
Danke
Josef
Sub Umwandeln()
Dim rng As Range
For Each rng In ActiveSheet.UsedRange.Cells
If rng.Value Like "*,####" Then
rng.NumberFormat = "0.00"
rng.Value = WorksheetFunction.Round(rng.Value, 2)
End If
Next rng
End Sub
Sub test()
Dim a As String
Dim b As String
a = ThisWorkbook.Sheets(1).Cells(1, 1).Text
b = ThisWorkbook.Sheets(1).Cells(2, 1).Text
c = Round(CDbl(a), 2)
d = Round(CDbl(b), 2)
End Sub
Um Text in eine Zahl mittels VBA umzuwandeln, kannst du folgendes Makro verwenden. Dieses Beispiel geht davon aus, dass die Daten in der aktiven Tabelle stehen und sie als Text mit vier Dezimalstellen formatiert sind. Das Ziel ist, diese in Zahlen mit zwei Dezimalstellen umzuwandeln.
ALT + F11, um den VBA-Editor zu öffnen.Einfügen und wähle Modul.Sub Umwandeln()
Dim rng As Range
For Each rng In ActiveSheet.UsedRange.Cells
If rng.Text Like "*,####" Then
rng.NumberFormat = "0.00"
rng.Value = WorksheetFunction.Round(CDbl(rng.Value), 2)
End If
Next rng
End Sub
ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.Fehlermeldung: Typen unverträglich
Diese Meldung tritt auf, wenn sich Fehlerwerte in den Zellen befinden. Um dies zu beheben, ändere die Zeile im Code von If rng.Value Like "*,####" Then zu If rng.Text Like "*,####" Then.
Das Makro funktioniert nicht
Stelle sicher, dass die Zellen, die du umwandeln möchtest, nicht markiert sind, da das Makro automatisch alle Zellen im verwendeten Bereich bearbeitet.
Wenn du kein VBA verwenden möchtest, kannst du auch Excel-Formeln nutzen, um Text in Zahlen umzuwandeln. Eine einfache Methode wäre, die Funktion WERT() zu verwenden.
=WERT(A1)Hier ein einfaches Beispiel, wie du mit VBA einen Text in eine Zahl umwandeln kannst:
Sub BeispielUmwandeln()
Dim a As String
a = ThisWorkbook.Sheets(1).Cells(1, 1).Text ' Zelle A1
Dim b As Double
b = Round(CDbl(a), 2) ' Umwandlung in Zahl mit 2 Dezimalstellen
End Sub
In diesem Beispiel wird der Text aus Zelle A1 genommen und in eine Zahl umgewandelt.
CDbl(), um sicherzustellen, dass der Text korrekt in eine Zahl umgewandelt wird. Dies kann nützlich sein, wenn du mit Kommazahlen arbeitest.1. Wie kann ich mehrere Spalten gleichzeitig umwandeln?
Du kannst das Makro so anpassen, dass es durch mehrere Spalten iteriert, indem du den Bereich in der Schleife anpasst.
2. Was tun, wenn ich eine Fehlermeldung bekomme?
Überprüfe die Zellen auf Fehlerwerte oder nicht konvertierbare Texte. Ändere den Code, um If rng.Text Like "*,####" Then zu verwenden.
3. Kann ich das Makro für eine bestimmte Spalte anpassen?
Ja, du kannst den Bereich in der Schleife ändern, um nur die gewünschte Spalte zu bearbeiten, z.B. For Each rng In ActiveSheet.Columns("A").Cells.