Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Text in Zahl konvertieren international

Text in Zahl konvertieren international
01.06.2004 01:27:24
Folker
Hallo,
ich möchte einen Wert aus einer Zelle zuverlässig in eine Excel-Dezimalzahl konvertieren. Der Wert in der Zelle kann eine Zahl oder ein Text und das Trennzeichen ein , oder ein . sein, je nach den Regional Settings. Meine Idee war den Wert als Text auszulesen. Das Trennzeichen, falls es ein . ist durch ein , zu ersetzen, das Dezimaltrennzeichen in Excel auf , und das Tausendertrennzeichen auf . zu setzen um unabhängig von den Regional Settings zu sein und dann den Wert als Zahl wieder in die Zelle zu schreiben.
Damit das funtkioniert muss ich den Text in eine Zahl umwandeln, was ich mit
text = "11,22"
CDbl(text)
erledige. Wenn die Regional Settings auf Deutsch stehen kommt da auch "11,22" raus. Stehen sie aber auf amerikanisch kommt auf einmal "1122" raus. Wieso?
Kennt jemand eine Funktion einen Text zuverlässig in eine Dezimalzahl zu verwandeln oder eine ganz andere Möglichkeit das Problem zu lösen?
Vielen Dank
Folker
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text in Zahl konvertieren international
Christoph
Hallo Folker,
mit application.decimalseparator bzw. .thousandsseparator kannst Du die aktuellen Einstellungen auslesen und entsprechend behandeln.
Bei Deinem Beispiel kommt 1122 raus, da das Komma ja das Tausendertrennzeichen ist und somit ignoriert wird.
Gruß
Christoph
AW: Text in Zahl konvertieren international
01.06.2004 09:54:59
Folker
Eben nicht. Ich setze ja die Regional Settings extra auf , als decimalseparator und . als thousand separator damit ich mit . und , kein Problem habe, aber am Ende kommt dann doch nicht die richtige Zahl raus. Hier mal mein Code:

Sub zahlen()
Dim dec As String
Dim thou As String
Dim sys As Boolean
Dim dot As Integer
Dim rng As Range
Dim data As Range
Dim text As String
On Error Resume Next
Set data = Range("A1:A50")
data.NumberFormat = "@"
With Application
dec = .DecimalSeparator
thou = .ThousandsSeparator
sys = .UseSystemSeparators
.DecimalSeparator = ","
.ThousandsSeparator = "."
.UseSystemSeparators = False
End With
For Each rng In data
text = rng.Value
If text <> "" Then
dot = findDot(text)
rng.NumberFormat = "0,00"
If dot > 0 Then text = Application.Replace(text, dot, 1, ",")
rng.Value = CDbl(text)
End If
Next rng
With Application
.DecimalSeparator = dec
.ThousandsSeparator = thou
.UseSystemSeparators = sys
End With
End Sub



Function findDot(ByVal text)
On Error Resume Next
findDot = Application.WorksheetFunction.Find(".", text)
End Function

Anzeige
AW: Text in Zahl konvertieren international
Martin
Hallo Folker,
versuch doch mal folgenden Ansatz ohne VBA. Dein Text "11,22" bzw, "11.22" steht in A1, in B1 folgende Formel:
=1*WECHSELN(A1;".";",")
Gruß
Martin Beck
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Text in Zahl konvertieren in Excel


Schritt-für-Schritt-Anleitung

Um Text in eine Zahl in Excel zu konvertieren, kannst du VBA verwenden oder eine einfache Formel nutzen. Hier sind die Schritte für beide Methoden:

Mit VBA:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den folgenden Code und füge ihn in das Modul ein:
Sub zahlen()
    Dim dec As String
    Dim thou As String
    Dim sys As Boolean
    Dim dot As Integer
    Dim rng As Range
    Dim data As Range
    Dim text As String
    On Error Resume Next
    Set data = Range("A1:A50") ' Stelle sicher, dass der Bereich korrekt ist
    data.NumberFormat = "@"
    With Application
        dec = .DecimalSeparator
        thou = .ThousandsSeparator
        sys = .UseSystemSeparators
        .DecimalSeparator = ","
        .ThousandsSeparator = "."
        .UseSystemSeparators = False
    End With
    For Each rng In data
        text = rng.Value
        If text <> "" Then
            dot = findDot(text)
            rng.NumberFormat = "0,00"
            If dot > 0 Then text = Application.Replace(text, dot, 1, ",")
            rng.Value = CDbl(text)
        End If
    Next rng
    With Application
        .DecimalSeparator = dec
        .ThousandsSeparator = thou
        .UseSystemSeparators = sys
    End With
End Sub

Function findDot(ByVal text)
    On Error Resume Next
    findDot = Application.WorksheetFunction.Find(".", text)
End Function
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Markiere den Bereich A1:A50, in dem sich deine Textwerte befinden.
  3. Führe das Makro zahlen aus (Entwicklertools > Makros > auswählen und Ausführen).

Ohne VBA:

  1. Wenn der Text "11,22" in Zelle A1 steht, kannst du die folgende Formel in B1 verwenden:
=1*WECHSELN(A1;".";",")
  1. Drücke Enter und die Zahl wird korrekt konvertiert.

Häufige Fehler und Lösungen

  • Fehler: Der Wert wird als 1122 angezeigt.

    • Lösung: Achte darauf, dass das Dezimaltrennzeichen und das Tausendertrennzeichen korrekt gesetzt sind. Verwende die VBA-Methode, um sicherzustellen, dass die Regional Settings nicht das Ergebnis beeinflussen.
  • Fehler: Die Formel gibt einen Fehler zurück.

    • Lösung: Überprüfe, ob der Text in der Zelle korrekt formatiert ist. Stelle sicher, dass keine unerwarteten Zeichen oder Leerzeichen vorhanden sind.

Alternative Methoden

  • Text in Zahl umwandeln mit Power Query:

    1. Lade die Daten in Power Query.
    2. Wähle die entsprechende Spalte aus.
    3. Klicke auf Transformieren und dann auf Datentyp ändern.
    4. Wähle Zahl aus.
  • Excel-Formel für einfache Umwandlung:

    • Verwende die Formel =WERT(A1) für die Umwandlung von Text in Zahl direkt in einer Zelle.

Praktische Beispiele

  1. Beispiel mit VBA:

    • Angenommen, in Zelle A1 steht "1.234,56". Nach Ausführung des VBA-Skripts wird in dieser Zelle die Zahl 1234,56 angezeigt.
  2. Beispiel mit Excel-Formel:

    • In Zelle A1 steht "12.345,67". Die Formel =1*WECHSELN(A1;".";",") in Zelle B1 gibt 12345,67 zurück.

Tipps für Profis

  • Verwende Application.WorksheetFunction im VBA, um auf Excel-Funktionen zuzugreifen.
  • Achte darauf, dass die Regional Settings deines Systems auf die gewünschte Sprache eingestellt sind, um Komplikationen zu vermeiden.
  • Experimentiere mit Text zu Spalten, um Textdaten in separate Spalten zu konvertieren, bevor du sie umwandelst.

FAQ: Häufige Fragen

1. Wie kann ich in Excel einen Text in eine Zahl umwandeln?
Du kannst entweder VBA verwenden oder eine Formel wie =WERT(A1) nutzen, um den Text in eine Zahl zu konvertieren.

2. Was mache ich, wenn die Zahl nicht korrekt konvertiert wird?
Überprüfe die Formatierung der Zelle und stelle sicher, dass keine unerwünschten Zeichen vorhanden sind. Verwende gegebenenfalls die VBA-Methode, um die Regional Settings zu berücksichtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige