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

Forumthread: Punkt durch Komma ersetzen

Punkt durch Komma ersetzen
25.05.2004 17:03:46
Heiko
Hallo, liebe VBA Profis ;-)
Ich habe natürlich vorher kräftig bei Google und Herber gestöbert und drei verschiedene Möglichkeiten gefunden, mit denen ich innerhalb einer Tabelle das Dezimalkomma in einen Dezimalpunkt umwandeln kann:
1. Replace-Methode
2. Funktion, die mittels InStr und Mid arbeitet ("KommaPunkt$" hier aus dem Forum)
3. Application.Substitude
Es scheint hier allerdings ein ganz dicker Excelbug vorzuliegen:
Die Methoden 1 und 2 funktionieren nicht zuverlässig (manche Zahlen werden korrekt transformiert, andere nicht)
Methode 3 scheint mein VBA gar nicht zu kennen, zumindest erscheint das "Substitude" nicht in der "Application"-Liste und die Hilfe schweigt sich zu diesem Thema auch aus.
Dann habe ich auf eigene Faust versucht, die jeweilige umzuwandelnde Zelle erst einmal einer Variablen (double) zuzuweisen und diese erst danach zu transformieren.
Bei einer Testdatei hat das auch geklappt. Im "großen" Programm streicht mir der exakt gleiche Code einfach das Komma weg, ohne es durch einen Punkt zu ersetzen.
Kennt jemand diese "Bugs" und hat evtl. _die_ Abhilfe?
Besten Dank im Voraus
Heiko
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Punkt durch Komma ersetzen
Andreas
Du zweifelst, aber ich schätze a mal zu unrecht
- Die Methoden 1 und 2 funktionieren nicht zuverlässig (manche Zahlen werden korrekt transformiert, andere nicht)
Bitte gib Beispiel hier an. Aber siehe zuerst unten
- Methode 3 scheint mein VBA gar nicht zu kennen
weil es substituTe und nicht substituDe heisst
Deine Überschrift lautet
Punkt durch Komma ersetzen
Aber im text steht
streicht mir der exakt gleiche Code einfach das Komma weg, ohne es durch einen Punkt zu ersetzen
Was genau willst Du machen?
Wenn Du eine DEUTSCHE Excel version und in einer Zelle 1,5 (eineinhalb) hast, dann gibt es in dieser Zelle KEIN Komma. Nur in der Darstellung vom Wert wird ein Komma ausgegeben.
Es gibt mit Sicherheit kein Bug hier
Anzeige
AW: Punkt durch Komma ersetzen
Heiko
Hallo Andreas,
Beispiel:
aus 2,3468E-3 wird 2.3468E-3 (richtig)
aus 8,3652E-1 wird 0,83652 (falsch)
Info: die Kommazahlen stehen in einer Textdatei und werden von meinem VBA-Programm eingelesen.
substituTe kennt mein Excel auch nicht ("D" war ein Schreibfehler, sorry)
und zum Betreff: Sorry, es muss heißen "Komma durch Punkt ersetzen".
Was meinst du mit "Nur in der Darstellung vom Wert wird ein Komma ausgegeben."?
Kann mir das bei der Lösung des Problems helfen?
Viele Grüße
Heiko
Anzeige
AW: Punkt durch Komma ersetzen
Andreas
So jetzt ist alles klar. Das einzige Problem ist es Dir zu erklären.
Du hast eine englische Excelversion.
2,3468E-3
ist ein Text von Länge 9 Zeichen. Wenn Du da sagst "ersetz Komma durch Punkt", dann kommt
2.3468E-3
raus und Du bist zu frieden.
2.3468E-3
Ist KEIN Text. Das ist eine Zahl und ist eine Abkürzung von (auf deutsch geschrieben)
2,3468 * 10^-3 was gleich ist mit 2,3468 * 1/10^3 was gleich ist mit 0,0023468
Das nennt man (glaube ich) Exponentialformat
Wenn Du in A1 2,3468E-3 schreibst und in B1 folgende Formel
=A1*1000
dann kommt eine Fehlermeldung.
Wenn Du in A1 2.3468E-3 schreibst und in B1 folgende Formel
=A1*1000
dann kommt 2.3468 raus. Das ist der Beweis, dass in dem Feld eine Zahl steht.
Du musst vermeiden, dass beim Einlesen, solche Daten, die als Zahlen missverstanden werden können, als Zahl gelesen werden. Wo kommen die Daten her. Hast Du Einfluss darauf. Und warum willst Du überhaupt Punkt durch Komma ersetzen - es sind schon Zahlen.
Wenn Du eine ENGLISCHE Excel version und in einer Zelle 1.5 (eineinhalb) hast, dann gibt es in dieser Zelle KEINEN PUNKT. Nur in der Darstellung vom Wert wird ein Punkt ausgegeben.
Anzeige
AW: Punkt durch Komma ersetzen
26.05.2004 14:58:56
Heiko
Hallo Andreas,
naja, hört sich alles schlüssig an. Scheint aber leider (zumindest bei mir) nicht so einfach zu sein.
Siehe folgende Zeile:
ActiveWorkbook.Sheets(1).Cells(k, j) = Replace(CStr(ActiveWorkbook.Sheets(1).Cells(k, j).Value), ",", ".")
Ich möchte hier den Inhalt einer Zelle mit der geänderten Version (Komma gegen Punkt getauscht) überschreiben.
Ohne "CStr" hat's nicht geklappt. Dann dachte, so wie du das auch schon meintest, dass es sich ja u.U. um keinen String handelt und VBA somit keine korrekte Ersetzung machen kann, da es einfach kein Komma findet. Also habe ich das CStr eingefügt. Das sollte mir doch eigentlich was auch immer in der Zelle steht in einen String umwandeln, oder? Replace sollte daraufhin also korrekt funktionieren, oder? Tut es aber nicht.
Ach ja, nur der Vollständigkeit halber: Ich arbeite mit einer deutschen Excel-Version und muss einige Zahlen eines - bzw. hunderter ;-) - deutsch-formatierten txt-files in das englische Format per VBA übersetzen und dann als ein anderes txt-file abspeichern (mit vollkommen anderer Dateistruktur)
Viele Grüße
Heiko
Anzeige
AW: Punkt durch Komma ersetzen
Andreas
Faszinierend.
Die ganze Zeit versucht Excel einem zu helfen, aber man will es nicht.
Ich kann es nachvollziehen, was Du sagst.
ActiveWorkbook.Sheets(1).Cells(k, j) = Replace(CStr(ActiveWorkbook.Sheets(1).Cells(k, j).Value), ",", ".")
sollte funktionieren - tut es aber nicht
Nur zur Info:
ActiveWorkbook.Sheets(1).Cells(k, j) = Replace(CStr(ActiveWorkbook.Sheets(1).Cells(k, j).Value), ",", ".") & "x"
funktioniert. Warum? Weil Excel entscheidet - das ist doch keine Zahl - ich lasse es so wie es ist.
Folgendes funktioniert
ActiveWorkbook.Sheets(1).Cells(k, j).numberformat="@"
ActiveWorkbook.Sheets(1).Cells(k, j) = Replace(ActiveWorkbook.Sheets(1).Cells(k, j).Value, ",", ".")
Anzeige
AW: Punkt durch Komma ersetzen
27.05.2004 11:01:24
Heiko
ja, Wahnsinn ;-o
Es klappt. Da muss man erstmal drauf kommen. Excel spinnt doch, oder?
Supervielenherzlichen Dank. Hast mir eine Woche Kopfschmerzen erspart ;-)
Eine Frage noch: das "@" sagt Excel, hey, du hast es hier mit einem String zu tun, oder? Liegt das nun an dem speziellen Zeichen oder kann man hierfür stattdessen irgendeinen Buchstaben verwenden?
Viele Grüße
Heiko
Anzeige
AW: Punkt durch Komma ersetzen
Andreas
Auf das @ bin ich gekommen, weil ich
Makro Recorder gestartet habe und
Zelle/Formatieren/Text
aufgezeichnet habe. Dort sieht man, das @ bedeutet, dass es die Zelle als ein Textfeld zu formatieren ist. Daher: Nein du darfst nicht einen anderen Buchtsbaen benutzen. Es muss @ sein.
AW: Punkt durch Komma ersetzen
25.05.2004 17:49:38
FloGo
Hallo Heiko
Wenn du als Dezimaltrennzeichen (Komma) immer einen Punkt willst kannst du das in der Systemsteuerung - Ländereinstellungen - Zahlen (bei Win2000) einstellen.
FloGo
Anzeige
AW: Punkt durch Komma ersetzen
25.05.2004 17:54:54
Heiko
Hallo FloGo,
besten Dank für den Tipp. Allerdings scheidet diese Möglichkeit aus.
Wir arbeiten hier standardmäßig mit der deutschen Version, müssen aber einige Dateien für ein anderes Programm in eine anders strukturierte englische Version transformieren... ;-(
Und eben diese Aufgabe soll das Tool übernehmen... tut es aber nicht zuverlässig.
Viele Grüße
Heiko
Anzeige
AW: Punkt durch Komma ersetzen
26.05.2004 09:07:25
André
HAllo Heiko,
probier mal das folgende File aus. Es liest Textdateien ins Excel ein und wandelt dabei Punkt in Komma.
https://www.herber.de/bbs/user/6765.xls
Evtl. musst Du nur das Trennzeichen, dass Deine Datensätze von einander trennt, anpassen.

Private Sub CommandButton1_Click()
read_raw_data 44  'Trennzeichen = Komma
End Sub

Zur Zeit ist da Komma eingestellt.
Viele Grüße
André
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Punkt durch Komma ersetzen in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA das Komma durch einen Punkt zu ersetzen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Rechtsklick auf VBAProject, wähle Einfügen und dann Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub KommaDurchPunktErsetzen()
        Dim k As Long, j As Long
        Dim ws As Worksheet
        Set ws = ActiveWorkbook.Sheets(1) ' Ändere dies entsprechend deiner Arbeitsblattnummer
    
        For k = 1 To ws.UsedRange.Rows.Count
            For j = 1 To ws.UsedRange.Columns.Count
                ws.Cells(k, j).Value = Replace(ws.Cells(k, j).Value, ",", ".")
            Next j
        Next k
    End Sub
  4. Starte das Makro: Gehe zurück zu Excel und drücke ALT + F8, wähle KommaDurchPunktErsetzen und klicke auf Ausführen.

Diese Methode sorgt dafür, dass alle Kommas in den Zellen durch Punkte ersetzt werden, ohne die Formatierung zu verändern.


Häufige Fehler und Lösungen

  • Fehler: Das Makro ersetzt das Komma nicht.

    • Lösung: Stelle sicher, dass die Zellen als Text formatiert sind. Füge ws.Cells(k, j).NumberFormat = "@" vor der Ersetzung hinzu.
  • Fehler: Der Code funktioniert nur für einige Zellen.

    • Lösung: Überprüfe, ob die Zellen tatsächlich Texte sind. Manchmal werden Zahlen als Texte eingelesen.

Alternative Methoden

Du kannst auch die Excel-Funktion Suchen und Ersetzen verwenden:

  1. Markiere den Zellenbereich.
  2. Drücke STRG + H, um das Fenster „Suchen und Ersetzen“ zu öffnen.
  3. Gib im Feld „Suchen nach“ ein Komma (,) und im Feld „Ersetzen durch“ einen Punkt (.) ein.
  4. Klicke auf „Alle ersetzen“.

Für komplexere Anforderungen kannst du eine VBA-Funktion erstellen, die auch andere Trennzeichen berücksichtigt.


Praktische Beispiele

  1. Ersetzen in einer bestimmten Spalte: Wenn du nur in einer bestimmten Spalte (z.B. Spalte A) die Kommas durch Punkte ersetzen möchtest:

    For k = 1 To ws.UsedRange.Rows.Count
        ws.Cells(k, 1).Value = Replace(ws.Cells(k, 1).Value, ",", ".")
    Next k
  2. Umwandlung von Dezimalzahlen: Um Dezimalzahlen mit Komma in Zahlen mit Punkt zu konvertieren, nutze die oben beschriebene Methode und stelle sicher, dass die Zellen als Zahlen formatiert sind.


Tipps für Profis

  • Verwende Application.Trim: Entferne überflüssige Leerzeichen, bevor du die Ersetzung vornimmst.

  • Überprüfe die Dateneingabe: Stelle sicher, dass die Daten korrekt eingelesen werden, insbesondere wenn du mit Textdateien arbeitest.

  • Erstelle eine Rückgängig-Funktion: Speichere die Originalwerte, bevor du die Ersetzung vornimmst, um jederzeit zurückkehren zu können.


FAQ: Häufige Fragen

1. Wie kann ich das Dezimaltrennzeichen in Excel ändern? Du kannst in den Systemeinstellungen deines Betriebssystems das Dezimaltrennzeichen ändern, jedoch beeinflusst dies auch andere Programme.

2. Wie kann ich sicherstellen, dass der Code nur für spezifische Zellen arbeitet? Du kannst den Code anpassen, um nur einen bestimmten Bereich von Zellen zu durchlaufen, indem du ws.Range("A1:A10") anstelle von ws.UsedRange verwendest.

3. Was ist der Unterschied zwischen Komma und Punkt in Excel? In einer deutschen Excel-Version wird ein Komma als Dezimaltrennzeichen verwendet, während in englischen Versionen ein Punkt verwendet wird. Achte darauf, welche Version du nutzt, um die richtigen Formate zu verwenden.

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