Clever-Excel-Forum

Normale Version: Kommastellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi,

http://www.herber.de/forum/archiv/748to7...tteln.html

in dem Link ist auch das Thema der "Ungenauigkeit" von Excel thematisiert.
@ Topology: Themen wurden zusammengeführt - bitte generell nur einmal posten.
So viele Antworten auf einmal =D 

Danke erstmals an alle;)


Das Problem ist ich habe 100 Zellen die ich in eine andere Tabelle importieren muss.

in Tabelle 1 können Mitarbeiter entscheiden wie viele Kommastellen sie verwenden möchten, jedoch wird nur die Anzeige geändert, nicht gerundet. (da mit dem Wert im Hintergrund weitergerechnet wird)

in Tabelle 2 möchte ich auch diesen Wert genau so stehen haben wie in Tabelle 1 mit den jeweiligen Kommastellen die der Mitarbeiter ausgewählt hat.
Am besten auf diese Kommastellen gekürzt. 


ist schwierig zu erklären :)


danke nochmals
Grüße
Hi,

Zitat:ist schwierig zu erklären [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
dann erzeuge doch eine Demodatei, in welcher erkennbar ist was du vorhast.
Das, was Deine Mitarbeiter da tun, ist ziemlich "verboten". Denn individuelle Formate von Zelle zu Zelle erzeugen im wahrsten Sinne Blähungen der Excel-Datei.

Außerdem geht Dein Vorhaben tatsächlich nur mit Programmierung, weil ein Format sich durch Aktualisierung niemals ändert. Nur bei Ersteintrag, was aber hier nicht einschlägig ist.

Drei Alternativen:
  • =TEXT() bzw. String an Quelle und Verlinkung vom Ziel dorthin, die erst DANACH als Zahl ausgewertet wird
  • auf maximale Dezimalstellen formatierte Zahlen, also 0,1000000 und 0,1234567
  • Vorhalten der genauen und der individuell gekürzten Zahl an der Quelle; Verlinkung dann nur der gekürzten
Hallo zusammen ;)

habs jetzt geschafft :):):) :15:

zur Erklärung sollte das jemand mal brauchen:

Die Anforderung:
Den angezeigten Wert von Tabelle1  in Tabelle 2 übertragen, nur die angezeigten Kommastellen (0,00 ; 0,000 ; 0,0000) ohne den gesamten Wert im Hintergrund mitzunehmen.

Lösung:
Das Problem lag daran das die Tabelle (bzw. der PC) DecimalSeparator = "," (KOMMA) hatte (laut Betriebssystem)

VBA aber mit "." (PUNKT) rechnet und deshalb cell(X,Y).value = cell(Z,U).text nicht funktioniert hat. (siehe weiter unten)

Habe jetzt mit diesem Makro, welches ich vor dem Übertragen laufen lasse primär auf "." (PUNKT) gestellt.

Code:
Sub KommastellenPunkt()
   With Application
       .DecimalSeparator = "."
       .ThousandsSeparator = ","
       .UseSystemSeparators = False
   End With
End Sub

Vor Beenden der Übertragung schalte ich nochmal zurück aufs Betriebssystem

Code:
Sub KommastellenSystem()
   With Application
       .UseSystemSeparators = True
   End With
End Sub

Somit kann jeder User in seiner Einstellung vom Betriebssystem die Werte eintragen und beim Übertragen wird eben kurzzeitig auf "." umgeschaltet.

ACHTUNG!
Wenn das nicht gemacht wurde :
Hat es den Wert 12,345 von Tabelle 1 (als Text) in der Tabelle 2 so übertragen: 12.345,00 (sprich ein Tausendertrennzeichen gesetzt)
cell(X;Y).value = cell(Z,U).text
12,34512.345,00

mit .Value wurde der gesamte Wert Übertragen und nicht nur der angezeigte: (war nicht gewünscht)
cell(X;Y).value = cell(Z,U).value
12,345 = 12,3456789



Liebe Grüße,
Seiten: 1 2