Autor
|
Thema: Formatierung bei Zahl mit Punkt (22802 mal gelesen)
|
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005
|
erstellt am: 19. Jun. 2009 06:59 <-- editieren / zitieren --> Unities abgeben:
Hi , ich schreibe gerade an einem Programm das unter anderem eine Liste in Excel ausgibt um sie zu speichern und zu drucken. Das alles ist kein Problem ABER...Ich übergebe einen Wert in folgendem Format als String 11.1. Excel macht mir daraus immer 11.Jan was ich durchaus auch noch verstehe. Jetzt formatiere ich die Zelle in "benutzerdefiniertes Format" und schreibe hier #.##. Excel schreibt mir nun "39.824". Das wiederrum verstehe ich überhaupt nicht den diese Zahl gibt ja das Datum im Standardformat wieder OBWOHL ich Excel gesagt habe er soll bitte dieses "#.##" Format hernehmen. Könnte mir ev. jemand erklären woran das liegt und was da im Hintergrudn abläuft? Es muss doch möglich sein eine Tabelle mit ZAHLEN (die mit Punkten getrennt werden) zu erstellen ohne das ich die Zahlen in einen String (also mit "'" davor) in Excel schreibe (dann wird es nämlich schwer mit dem rechnen ) Das ganze versuche ich übriges in der Version Microsoft Office 2007 zu realisieren ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 19. Jun. 2009 07:16 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
Guten Morgen Daniel, hast du vielleicht mal versucht, das ganze als Text zu formatieren? Geht genau so, wie das benutzerdefinierte Format nur mit einem "@"! Das weiterrechnen mit dem ganzen dürfte auch kein Problem darstellen und selbst wenn, vorher einfach in den entsprechenden Datentyp konvertieren! Ich hab das mal per vb.net auf folgende Art und Weis gelöst:
Code: .Range(.Cells(Zeile, Spalte), .Cells(Zeile, Spalte)).NumberFormat = "@"
HTHGrüße Tobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADdog Ehrenmitglied V.I.P. h.c.
Beiträge: 2237 Registriert: 30.04.2004 Intel Xeon 3,6 GHz 32 GB RAM NVIDIA Quadro P2000 Windows 10 Enterprise AutoCADmap 3D 2023 WS-Landcad 2023 QGIS 3.10
|
erstellt am: 19. Jun. 2009 07:16 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
Hallo, wahrscheinlich hast du deinem Excel gesagt, dass es das Dezimaltrennzeichen vom Betriebssystem übernehmen soll. Das lässt sich durch diese Zellenformatierung so nicht überschreiben. Also in meiner Excel-version (in der Hoffnung, es hat sich nicht allzusehr geändert):Extras->Optionen->International->Dezimaltrennzeichen ------------------ Gruß Thomas CADdog, the dog formerly known as TR AutoCAD spricht mit einem, aber viele hören nicht zu. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 19. Jun. 2009 07:21 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
... in 2007: Office-Schaltfläche (die bunte ganz links ganz oben) - Excel-Optionen - Erweitert: Trennzeichen vom Betriebssystem übernehmen [Edit: Zitat: ...Ich übergebe einen Wert in folgendem Format als String 11.1...
Alternativ: Wert als Zahl übergeben/einlesen . Woher kommen denn die Werte? Import o. ä.? Copy&Paste? /Edit] ------------------ DIN1055.de | Lastannahmen für Anwender NEU: Foren zu DIN 1055 [Diese Nachricht wurde von Paulchen am 19. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005
|
erstellt am: 19. Jun. 2009 07:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, hab ich alles versucht hilft einfach nicht . Egal wie ich die Zelle formatiere und egal ob ich die Dezimaltrennzeichen vom Betriebssystem übernehme oder nicht er macht mir aus der "11.1" immer ein "39.824" ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005
|
erstellt am: 19. Jun. 2009 07:44 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Paulchen: ... in 2007: Office-Schaltfläche (die bunte ganz links ganz oben) - Excel-Optionen - Erweitert: Trennzeichen vom Betriebssystem übernehmen[Edit: [QUOTE]...Ich übergebe einen Wert in folgendem Format als [b]String 11.1...
Alternativ: Wert als Zahl übergeben/einlesen . Woher kommen denn die Werte? Import o. ä.? Copy&Paste? /Edit] [/B][/QUOTE] Hi, die Werte kommen aus einer ListView. Ich habe den Wert auch schon als Single übergeben (Format war XX.X) und Excel schreibt mir troztdem die "39.824". Mir kommt es so vor als würde Excel jedes mal wenn ich eine Zahl mit Punkt eingebe automatisch in das Datumsformat wechseln. Wenn ich die Foramtierung umstelle rechnet er als hätte ich ein Format Datum in ein Format Standard formatiert. Und genau da ist der Hacken. Er soll die Zahl so schreiben wie sie ist und nicht als Datum interpretieren. Ich hatte gehofft es gibt eine art Einstellung mit der ich Excel sagen kann wenn eine Zahl mit Punkt kommt dann behandel sie immer als Standardformat und nicht standardmäßig als Datum ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 19. Jun. 2009 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
Hallo Daniel, in der "normalen" Einstellung von deutschem Windows ist der Dezimalpunkt das Tausendertrennzeichen, das Dezimalkomma eben der Trenner für die Nachkommastellen. Wenn du dich also weigerst deine Ausgabe mit Dezimalkomma zu machen statt mit Punkt (warum auch immer) solltest du die auf drei Stellen nach dem Komma auffüllen. Warum? Wenn du deine Zahl so nach Excel eingibst (11.1) versucht das was "vernünftiges" draus zu machen. Es analysiert den eingegebenen Wert und kann sich jetzt entscheiden zwischen einem Datum (also der 11.Januar diesen Jahres) oder einem Zahlen wert, wo die beiden letzten Stellen (die Einer und Zehner) nicht bekannt sind. Von der Logik her würde ich auch in dieser Situation immer auf das Datum tippen. Das Datum 11.01.2009 ergibt in der internen Darstellung aber nun mal die Zahl 39824, vergangene Tage seit dem 01.01.1900, das als Basis genommen wird - es sei denn du hast in den Exceloptionen 1904-Datumwerte eingestellt, dann wird das als Basis genommen. Wenn du jetzt also deine Eingabe, von der Excel ausgehen muss, dass es ein Datum ist, auf Zahlenwert formatierst, kommt logischerweise 39824 dabei heraus. Wenn du deine Zahl nun als 11.100 eingeben würdest würde Excel daraus tippen, dass du eine Zahl (mit Tausendertrennung!) eingeben wolltest und macht daraus dann als Zahl 11000. Zur Lösung deiner Aufgabe hast du also mehrere Möglichkeiten: du stellst in deinem Excel die Tausender und Dezimaltrenner um (siehe Bild für Excel 2007), du fügst dir vorher deine Werteliste eben in Notepad ein und machst einmal Ersetzen "." -> "," oder formatierst in deiner Ausgabelistview direkt korrekt mit den Systemtrennern. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 19. Jun. 2009 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
Umweg mit einer Hilfsspalte. In Spalte A gibst Du Deine Werte ein. Spalte A ist als "Text" (!) formatiert. Wenn Du 11.1 eingibst, dann bleibt auch 11.1 (linksbündig) stehen. In Spalte B packst Du folgende Formel: =WECHSELN(A1;".";",") Damit wird aus dem Punkt ein Komma. Spalte B ist als "Standard" formatiert. Dort steht dann z. B. 11,1 -zwar immer noch linksbündig - also ein schwaches Erkennungsmerkmal für "Text", da Zahlen rechtsbündig erscheinen -, aber Du kannst mit den Werten aus Spalte B weiterrechnen. Test in Spalte C: =2*B1 ergibt 22,2. Die Hilfsspalte B kannst Du anschließend ausblenden. HTH ------------------ DIN1055.de | Lastannahmen für Anwender NEU: Foren zu DIN 1055 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005
|
erstellt am: 19. Jun. 2009 08:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, ah...STOP...WARTET also ich brauche diesen Punkt weil die Zellen Versionsangaben einer Software darstellen (also z.B. "11.1" ist die Version einer Software die einem Projekt zugeordnet ist). Das mit dem ersetzen und auch mit dem String (in Excel) schreiebn ist mir klar. Ich wundere mich nur das Microsoft sich rausnimmt meine eingegeben Zahl zu formatieren (wie es ein Silikontrottel für richtig hält) und mir als Anwender nicht die Möglichkeit gibt dies zu unterbrinden ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 19. Jun. 2009 08:52 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
Zitat: Original erstellt von DanielFr.: also ich brauche diesen Punkt weil die Zellen Versionsangaben einer Software darstellen [...]Ich wundere mich nur das Microsoft sich rausnimmt meine eingegeben Zahl zu formatieren (wie es ein Silikontrottel für richtig hält) und mir als Anwender nicht die Möglichkeit gibt dies zu unterbrinden
Ach so. Na, der Silikontrottel tut nur genau das, was du ihm sagst. Eine Zellformatierung mit "Standard" hat eben auch implizit den Standard zu erraten, was der Fleischhaufen vor der Tastatur wohl meinen könnte. Wenn du weißt, dass du Texte eingeben willst, formatierst du die Zellen vorher als Text und er wird deine Texte in Ruhe lassen und da brav "11.1" reinschreiben. Wobei ich das oben so verstanden hatte, dass es zwar ein Text ist, mit dem du aber rechnen willst, also Zahlen draus machen möchtest Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HTBU Mitglied Konstrukteur
Beiträge: 19 Registriert: 05.03.2008 Inventor 2008
|
erstellt am: 19. Jun. 2009 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
Hallöchen zusammen Wenn du nicht möchtest das dir der Böse Excel ein Datum aus deiner Zahl macht, dann musst du einfach ein Hochkomma vor der Zahl eingeben. Das sieht dann so aus: '11.1 Das Hochkomma (auf der Raute-Taste) siehst du nur oben in der Eingabezeile, beim Drucken und in der Excelzelle nist es unsichtbar. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005
|
erstellt am: 19. Jun. 2009 09:15 <-- editieren / zitieren --> Unities abgeben:
Hallo, genau das was man mit der Textformatierung machen kann (sprich vor der Eingabe der Zahl die ganze Spalte in "Text" formatieren) würde ich gerne mit einem benutzerdefinierten Format (#.##) machen. Das scheint aber nicht zu gehen denn dann wandelt er es um. Naja ich glaube ich formatiere die ganze Spalte einfach als Text und bevor ich dann weiterrechen einfach wieder als Double mit Komma. Das ist dann zwar ein bisschen mehr Programmieraufwand aber es geht zumindestens @ HTBU: genau das wollte ich eigentlich nicht haben (siehe ersten Beitrag ) MERCY ERSTMAL AN ALLE ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 19. Jun. 2009 09:20 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
Kannst Du unterbinden: Wie schon erwähnt mit Range("A1").NumberFormat = "@" Dann kommt aber bei einer Rechnung 11.9-11.5 = 123 raus. Also: Application.DecimalSeparator = "." Application.UseSystemSeparators = False => 11.9-11.5 = 0.4 Das ist aber Systemeinstellung -> unerwartete Effekte können auftreten => Den Teil in die Private Sub Workbook_Open() und Application.DecimalSeparator = "," Application.UseSystemSeparators = True in die Private Sub Workbook_BeforeClose(Cancel As Boolean) Mischung aus Dez-Trenner "." und "," gleichzeitig geht nicht, Du mußt Dich schon entscheiden ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HTBU Mitglied Konstrukteur
Beiträge: 19 Registriert: 05.03.2008 Inventor 2008
|
erstellt am: 19. Jun. 2009 10:41 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
Ups! Wer lesen kann ist klar im Vorteil (' Das Hochkomma kannst du trotzdem davor schreiben. Um mit den Zahlen weiter zu Rechnen kannst du etwas in der Art machen: "=RECHTS(A3;LÄNGE((A3-1)))+1" Das ist natürlich alles Andere als elegant. [Diese Nachricht wurde von HTBU am 19. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
heiko_hems Mitglied Freier Architekt
Beiträge: 1295 Registriert: 14.01.2005
|
erstellt am: 19. Jun. 2009 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für DanielFr.
Hallo Daniel, ich verstehe zwar nicht warum Du mit Versionsnummern rechnen willst, aber egal. Ich würd's so lösen: Hilfsspalte A: 11 Hilfsspalte B: 1 Lesespalte C: Verketten(A+"."+B) Ausblenden von A und B aber gerechnet wird mit A und B. Hoffe das war so zu verstehen !? ------------------ Gruß Heiko "Es gibt kein richtiges Leben im falschen." - Theodor W. Adorno in Minima Moralia, 43 und das hat er gesagt lange bevor es SL, WOW, ETC gab ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |