Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
432to436
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
432to436
432to436
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
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

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
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
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.
Anzeige
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
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
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

233 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige