M
MSCom
Neuer Benutzer
Threadstarter
- Dabei seit
- 20.09.2016
- Beiträge
- 1
Hallo zusammen,
ich bearbeite einige große Excel Tabellen, um Zahlen kundengerecht umzustellen.
Die Zahlenwerte bewegen sich im Bereich von 1 bis 3 Ziffern vor dem Komma mit bis zu 13 Nachkommaziffern.
Es ist gefordert, die Zahlenwerte unverändert in neue Tabellen zu transferieren.
Die Zellen aller Tabellen sind immer als Zahlenformat "Standard" formatiert.
Dazu benutze ich ein VBA Makro mit dem Befehl "[Ziel].formular1c1 = [Quelle].value
Seit ein paar Monaten stelle ich fest, dass Excel etwa 3% der Zahlen nicht korrekt in die Zielzelle schreiben kann.
Beispiel:
Zahl: "10,2627257845836", angezeigt von Excel als "10,26272578". So weit ok.
Wird diese Zahl mit dem VBA Befehl "formular1c1" in eine Zelle einer neuen Tabelle geschrieben, wird daraus:
Zahl: "1026272578", angezeigt von Excel als "1.026.272.578".
Die vorher in der Zielzelle vorhandene Standard Formatierung wird von Excel selbstständig durch das
Format 'Zahl' ersetzt, und die '1000-er Trennzeichen verwenden' ist aktiviert.
Meine bisherigen Lösungsversuche:
- das Problem tritt auf unterschiedlichen Rechnern unterschiedlichen Alters und unter unterschiedlichen Accounts auf
- das Problem tritt nicht bei allen Zahlen auf, die Zahl vor dem Komme muss größer Null sein und darf maximal zwei Ziffern besitzen
- das Problem tritt erst bei VBA Makros auf, die im letzten halben Jahr geschrieben wurden
- das Problem kann nicht durch vorherige Formatierung der Quell- oder Zielzelle beeinflusst werden, da Excel die Formatierung des Ziels immer ersetzt. Eine nachträgliche Formatierung ändert am eingeschriebenen Wert natürlich nichts mehr.
- das Problem tritt nur bei einer Mindestanzahl von Nachkommastellen auf:
13 Nachkommastellen: "10,2627257845836" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
12 Nachkommastellen: "10,262725784583" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
11 Nachkommastellen: "10,26272578458" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
10 Nachkommastellen: "10,2627257845" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
9 Nachkommastellen: "10,262725784" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
8 Nachkommastellen: "10,26272578" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
7 Nachkommastellen: "10,2627257" ---> "102627257", angezeigt von Excel als "102.627.257" (falsch)
6 Nachkommastellen: "10,262725" ---> "10262725", angezeigt von Excel als "10.262.725" (falsch)
5 Nachkommastellen: "10,26272" ---> "1026272", angezeigt von Excel als "1.026.272" (falsch)
4 Nachkommastellen: "10,2627" ---> "102627", angezeigt von Excel als "102.627" (falsch)
3 Nachkommastellen: "10,262" ---> "10262", angezeigt von Excel als "10.262" (falsch)
2 Nachkommastellen: "10,26" ---> "10,26", angezeigt von Excel als "10,26" (richtig)
1 Nachkommastellen: "10,2" ---> "10,2", angezeigt von Excel als "10,2" (richtig)
0 Nachkommastellen: "10" ---> "10", angezeigt von Excel als "10" (richtig)
- das Problem ändert sich nicht mit der Änderung der Ländereinstellungen (Dezimaltrennzeichen, Tausendertrennzeichen)("." und ",") von System und Excel (jede Kombination ausprobiert)
- das Problem ändert sich nicht, wenn das Makro in unterschiedlichen Formaten arbeiten ("*xlsm", "*xls")
- das Problem tritt NICHT bei manueller Eingabe auf.
- das Problem lässt sich nicht durch VBA beeinflussen:
1. Einschreiben als Text: "[Ziel].formular1c1 = [Quelle].Text ---> "1.026.272.578" (falsch)
2. Einschreiben als Wert: "[Ziel].formular1c1 = [Quelle].Value ---> "10,2627257845836" (hier richtig, aber nicht immer)
3. Quellwert als Variant Variable festlegen: Dim VarWert as Variant, VarWert = [Quelle].Value
"[Ziel].formular1c1 = VarWert ---> "10,2627257845836" (hier richtig, aber nicht immer)
4. Quellwert als String Variable festlegen: Dim VarWert as String, VarWert = [Quelle].Text
"[Ziel].formular1c1 = VarWert ---> "10,2627257845836" (hier richtig, aber nicht immer)
5. Quellwert mit Hochkomma einschreiben: "[Ziel].formular1c1 = "'" & [Quelle].Text ---> "'10,26272578" (falsch, die letzten 5 Nachkommastellen werden abgeschnitten, außerdem wünschen die Kunden ihre Zahlen nicht als Text)
Genauer kann ich das Problem leider nicht eingrenzen. Mir ist noch bekannt, dass beim csv Export aus einer großen Datenbank auch Zahlen mit mehr als 3 Nachkommastellen verändert werden. Durch diese Unzuverlässigkeit steht Excel zur Zeit als Arbeitsmittel in Frage.
Die verwendete Excel Version: Microsoft Office Professional Plus, Version 14.0.7214.5000
Vielen Dank im voraus für Antworten, ich würde mich freuen!
Als Anhang noch weitere Zahlen, die nicht richtig übertragen werden.
Die Zahlen rechts wurden so erzeugt: Range("B" & i).FormulaR1C1 = Range("A" & i).Text (mit i als Zeilenzähler)
ich bearbeite einige große Excel Tabellen, um Zahlen kundengerecht umzustellen.
Die Zahlenwerte bewegen sich im Bereich von 1 bis 3 Ziffern vor dem Komma mit bis zu 13 Nachkommaziffern.
Es ist gefordert, die Zahlenwerte unverändert in neue Tabellen zu transferieren.
Die Zellen aller Tabellen sind immer als Zahlenformat "Standard" formatiert.
Dazu benutze ich ein VBA Makro mit dem Befehl "[Ziel].formular1c1 = [Quelle].value
Seit ein paar Monaten stelle ich fest, dass Excel etwa 3% der Zahlen nicht korrekt in die Zielzelle schreiben kann.
Beispiel:
Zahl: "10,2627257845836", angezeigt von Excel als "10,26272578". So weit ok.
Wird diese Zahl mit dem VBA Befehl "formular1c1" in eine Zelle einer neuen Tabelle geschrieben, wird daraus:
Zahl: "1026272578", angezeigt von Excel als "1.026.272.578".
Die vorher in der Zielzelle vorhandene Standard Formatierung wird von Excel selbstständig durch das
Format 'Zahl' ersetzt, und die '1000-er Trennzeichen verwenden' ist aktiviert.
Meine bisherigen Lösungsversuche:
- das Problem tritt auf unterschiedlichen Rechnern unterschiedlichen Alters und unter unterschiedlichen Accounts auf
- das Problem tritt nicht bei allen Zahlen auf, die Zahl vor dem Komme muss größer Null sein und darf maximal zwei Ziffern besitzen
- das Problem tritt erst bei VBA Makros auf, die im letzten halben Jahr geschrieben wurden
- das Problem kann nicht durch vorherige Formatierung der Quell- oder Zielzelle beeinflusst werden, da Excel die Formatierung des Ziels immer ersetzt. Eine nachträgliche Formatierung ändert am eingeschriebenen Wert natürlich nichts mehr.
- das Problem tritt nur bei einer Mindestanzahl von Nachkommastellen auf:
13 Nachkommastellen: "10,2627257845836" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
12 Nachkommastellen: "10,262725784583" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
11 Nachkommastellen: "10,26272578458" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
10 Nachkommastellen: "10,2627257845" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
9 Nachkommastellen: "10,262725784" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
8 Nachkommastellen: "10,26272578" ---> "1026272578", angezeigt von Excel als "1.026.272.578" (falsch)
7 Nachkommastellen: "10,2627257" ---> "102627257", angezeigt von Excel als "102.627.257" (falsch)
6 Nachkommastellen: "10,262725" ---> "10262725", angezeigt von Excel als "10.262.725" (falsch)
5 Nachkommastellen: "10,26272" ---> "1026272", angezeigt von Excel als "1.026.272" (falsch)
4 Nachkommastellen: "10,2627" ---> "102627", angezeigt von Excel als "102.627" (falsch)
3 Nachkommastellen: "10,262" ---> "10262", angezeigt von Excel als "10.262" (falsch)
2 Nachkommastellen: "10,26" ---> "10,26", angezeigt von Excel als "10,26" (richtig)
1 Nachkommastellen: "10,2" ---> "10,2", angezeigt von Excel als "10,2" (richtig)
0 Nachkommastellen: "10" ---> "10", angezeigt von Excel als "10" (richtig)
- das Problem ändert sich nicht mit der Änderung der Ländereinstellungen (Dezimaltrennzeichen, Tausendertrennzeichen)("." und ",") von System und Excel (jede Kombination ausprobiert)
- das Problem ändert sich nicht, wenn das Makro in unterschiedlichen Formaten arbeiten ("*xlsm", "*xls")
- das Problem tritt NICHT bei manueller Eingabe auf.
- das Problem lässt sich nicht durch VBA beeinflussen:
1. Einschreiben als Text: "[Ziel].formular1c1 = [Quelle].Text ---> "1.026.272.578" (falsch)
2. Einschreiben als Wert: "[Ziel].formular1c1 = [Quelle].Value ---> "10,2627257845836" (hier richtig, aber nicht immer)
3. Quellwert als Variant Variable festlegen: Dim VarWert as Variant, VarWert = [Quelle].Value
"[Ziel].formular1c1 = VarWert ---> "10,2627257845836" (hier richtig, aber nicht immer)
4. Quellwert als String Variable festlegen: Dim VarWert as String, VarWert = [Quelle].Text
"[Ziel].formular1c1 = VarWert ---> "10,2627257845836" (hier richtig, aber nicht immer)
5. Quellwert mit Hochkomma einschreiben: "[Ziel].formular1c1 = "'" & [Quelle].Text ---> "'10,26272578" (falsch, die letzten 5 Nachkommastellen werden abgeschnitten, außerdem wünschen die Kunden ihre Zahlen nicht als Text)
Genauer kann ich das Problem leider nicht eingrenzen. Mir ist noch bekannt, dass beim csv Export aus einer großen Datenbank auch Zahlen mit mehr als 3 Nachkommastellen verändert werden. Durch diese Unzuverlässigkeit steht Excel zur Zeit als Arbeitsmittel in Frage.
Die verwendete Excel Version: Microsoft Office Professional Plus, Version 14.0.7214.5000
Vielen Dank im voraus für Antworten, ich würde mich freuen!
Als Anhang noch weitere Zahlen, die nicht richtig übertragen werden.
Die Zahlen rechts wurden so erzeugt: Range("B" & i).FormulaR1C1 = Range("A" & i).Text (mit i als Zeilenzähler)