Hi,
ich verwende Microsoft Office Professional Plus 2010 und stehe derzeit vor einem - für mich - unlösbaren Excel-Problem.
Folgende Problematik liegt vor: Ich habe in einer Spalte Zahlen mit 3 Dezimalstellen, z.B.:
1,319
1,359
1,289
usw.
Jene Zahlen sind direkt eingetragen und entstammen keiner Berechnung, o.ä.
Angezeigt werden soll jedoch nur bis zu 2 Stellen nach dem Komma - jedoch ungerundet.
Lege ich dies über die Zellenformatierung fest, wird automatisch aus 1,319 => 1,32. Excel soll aber keine Rundung vornehmen sondern lediglich nach 2 Nachkommastellen „abschneiden“.
Bin dann auf 2 Funktionen gestoßen: Zum einen „ABRUNDEN“ und zum anderen „KÜRZEN“. Das Problem: Der Zelleninhalt z.B.: 1,319 soll lediglich als 1,31 angezeigt, jedoch als 1,319 zu weiteren Berechnungen weitergegeben werden. Wenn ich sowohl ABRUNDEN als auch KÜRZEN verwende, wird jedoch nur mit 2 Nachkommastellen gerechnet, was zu einem falschen Ergebnis führt.
Ich bin inzwischen ziemlich ratlos. Ich will, wie gesagt nur: 2 Nachkommastellen sollen ohne Rundung angezeigt werden, es soll aber mit der kompletten Zahl (also auch der 3. Nachkommestelle) in einer anderen Zelle weitergerechnet werden können.
Hat irgendwer einen Lösungsvorschlag für mich ?
Wäre sehr dankbar!
Gruß
Grüezi StarKeeper
Folgende Problematik liegt vor: Ich habe in einer Spalte
Zahlen mit 3 Dezimalstellen, z.B.:
1,319
1,359
1,289
usw.
Jene Zahlen sind direkt eingetragen und entstammen keiner
Berechnung, o.ä.
Angezeigt werden soll jedoch nur bis zu 2 Stellen nach dem
Komma - jedoch ungerundet.
Lege ich dies über die Zellenformatierung fest, wird
automatisch aus 1,319 => 1,32. Excel soll aber keine Rundung
vornehmen sondern lediglich nach 2 Nachkommastellen
„abschneiden“.
Und was genau ist denn der Sinn dieser ungewöznlichen (-sinnigen) Darstellung?
Bin dann auf 2 Funktionen gestoßen: Zum einen „ABRUNDEN“ und
zum anderen „KÜRZEN“. Das Problem: Der Zelleninhalt z.B.:
1,319 soll lediglich als 1,31 angezeigt, jedoch als 1,319 zu
weiteren Berechnungen weitergegeben werden. Wenn ich sowohl
ABRUNDEN als auch KÜRZEN verwende, wird jedoch nur mit 2
Nachkommastellen gerechnet, was zu einem falschen Ergebnis
führt.
Dann verwende die Funktionen in einer Hilfsspalte und rechne mit den Werten in der ursprünglichen Spalte.
Ich bin inzwischen ziemlich ratlos. Ich will, wie gesagt nur:
2 Nachkommastellen sollen ohne Rundung angezeigt werden, es
soll aber mit der kompletten Zahl (also auch der 3.
Nachkommestelle) in einer anderen Zelle weitergerechnet werden
können.
Hat irgendwer einen Lösungsvorschlag für mich ?
Das ist so nicht möglich und das ist meiner Ansicht nach auch richtig so… 
Mit freundlichen Grüssen
Thomas Ramel
Der Hintergrund / Sinn ist folgender:
Es geht um die Darstellung von Benzinpreisen, welche bekannterweise mit 3 Dezimalstellen existieren => 1,319 € / L
Im Volksmunde ist aber von 1,31 € / L die Rede und nicht von 1,319 € / L bzw. 1,32 € / L. Zur Berechnung einer korrekten Gesamtsumme nach einem Tankvorgang muss jedoch zwingend mit allen 3 Nachkommastellen gerechnet werden um deckungsgleich mit einer tatäschlichen Rechnungssumme zu sein.
In einer sauberen Excel-Liste soll deshalb lediglich der Betrag bis zu 2 Nachkommastellen ohne Rundung angezeigt werden, zur weiteren Verarbeitung jedoch mit allen 3 Nachkommastellen gerechnet werden.
Irgendwie muss sowas doch möglich sein ? Kann doch nicht sein, dass es gänzlich unmöglich ist, eine Zelle auf 2 Nachkommestellen lediglich in der Anzeigeform zu kürzen ohne dass dies Auswirkungen auf die weitere Verarbeitung hat ?
Eine Hilfsspalte ist leider eine äußerst unattraktive Lösung :-/
1,319
1,359
1,289
Angezeigt werden soll jedoch nur bis zu 2 Stellen nach dem
Komma - jedoch ungerundet.
das geht m.E. mit Excel Bordmitteln nicht.
was geht sind die Formeln die du schon genannt hast oder
B1: =GANZZAHL(A1*100)/100
Aber weiterrechen mit dem korrekten Wert, dazu müßtest du A1 benutzen.
In A1 den Wert mit mehreren Nachkommastellen eingeben und er wird ungerundet mit zwei Nachkommastellen angezeigt, also ohne Hilsspalte B, geht m.E. nicht.
Mit Vba sehe ich da eine vage Möglichkeit daß zu erreichen.
D.H., du gibts in A1 ein
1,95583
angezeigt in A1 wird
1,95
Zum Weiterechnen kannste jetzt nicht schreiben:
=A1 * 2
sondern
=Fkt(A1) * 2
Wäre das was für dich?
Wie gesagt, vage, grad so erdacht, könnte so klappen oder auch nicht.
Gruß
Reinhard
Deine VBA-Variante klingt sehr intressant und wäre eine Alternative. Leider kenne ich mich mit VBA nicht aus und wüsste nicht, wie das zu realisieren wäre ? :-/
Deine VBA-Variante klingt sehr intressant und wäre eine
Alternative. Leider kenne ich mich mit VBA nicht aus und
wüsste nicht, wie das zu realisieren wäre ? :-/
hallo SK,
klick mal mit rechts unten auf den Tabellennamen, dann normal mit links auf Code anzeigen.
Dort kopierst du diesen Code rein:
Option Explicit
Private Sub Worksheet\_Change(ByVal Target As Range)
If Target.Column 1 Then Exit Sub
If Target.Count \> 1 Then Exit Sub
Worksheets("Tabelle3").Range(Target.Address) = Target.Value
Application.EnableEvents = False
Target.Value = Int(Target.Value \* 100) / 100
Application.EnableEvents = True
End Sub
Dann klickst du oben auf Einfügen—Modul, dortrein kopierst du diesen Code:
Function Werte(ByRef Zelle As Range)
Werte = Worksheets(„Tabelle3“).Range(Zelle.Address).Value
End Function
und schließt den Editor.
Wenn du nun irgendwo in Spalte A des tabellenblattes einen Wert eingibst wie z.B.
1,32999
so wird er vom Code automatisch im Blatt Tabelle3 so gespeichert wie du ihn eingegebn hast.
Angezeigt wird aber wie gewünscht nur
1,32
Um damit rechnen zu können benutzt du jetzt
anstatt
=A1
jetzt
=Werte(A1)
in Formeln
Teste das erstmal in einer neuen leeren Mappe bis du damit klarkommst.
Dann sag was in deiner Tabelle wo was ist sodaß man den Code anpassen kann wenn nicht A die zu überprüfende Spalte ist.
Die hier als Speicher genutzte tabelle3 kann man auch ausblenden, dann „stört“ sie nicht in Excel.
Vba ist es wurscht ob sie ausgeblendet ist (meist)
Gruß
Reinhard
Hi,
ich danke Dir vielmals für deine Lösung. Habe es gerade eben in einer leeren Excel-Datei getestet und es funktioniert 1a.
So wie ich es sehe und verstanden habe, wird die Eintragung in Tabelle1 automatisch auf zwei Nachkommastellen gekürzt, gleichzeitig aber ein vollständiger Datensatz in Tabelle3 gespeichert, mit welchem dann auch mittels Werte(Spaltenname) auch gerechnet wird.
Das klingt für mich sehr attraktiv, weil die Werte automatisch in Tabelle 3 gesichert werden und nicht doppelt eingegeben werden müssen.
Einziges Problem besteht jetzt in der Kompatibilität mit meiner bereits existierenden Excel-Datei, da die betreffende Spalte leider nicht „A“ sondern „G“ ist.
Bin selbst zwar etwas versiert in PHP aber bei dem VB-Code steige ich nicht durch, wo ich quasi A durch G ersetzen kann. Wäre deshalb in diesem Fall nochmal auf deine Hilfe angewiesen :-/
Ein kleiner, unschöner Nebeneffekt ist mir noch aufgefallen: Wenn in einer Zelle ein Wert eingetragen, jedoch anschließend wieder gelöscht wird, bleibt eine nicht entfernbare „0“ darin stehen, obwohl in der Zwischenspeicherungstabelle „Tabelle3“ der Datensatz ebenso nicht mehr vorhanden ist. Gibt es dafür auch noch eine einfache Lösung ?
Ist zwar nicht sonderlich schlimm aber sollte man sich mal vertippen und ausversehen ein paar Zeilen weiter unten etwas eintragen, kann man’s nicht mehr entfernen :-/
Für die Hilfe schon mal vielen vielen vielen Dank! Selten so etwas nettes erlebt
Werde mich wohl mal in naher Zukunft mit dieser VB-Skript-Thematik außeinandersetzen. Finde das sehr interessant…
Beste Grüße
StarKeeper
Hallo SK,
So wie ich es sehe und verstanden habe, wird die Eintragung in
Tabelle1 automatisch auf zwei Nachkommastellen gekürzt,
gleichzeitig aber ein vollständiger Datensatz in Tabelle3
gespeichert, mit welchem dann auch mittels Werte(Spaltenname)
auch gerechnet wird.
genau so.
Einziges Problem besteht jetzt in der Kompatibilität mit
meiner bereits existierenden Excel-Datei, da die betreffende
Spalte leider nicht „A“ sondern „G“ ist.
If Target.Column 7 Then Exit Sub
A ist die erste Spalte von links, G die siebte Spalte.
Wenn du den VB-Editor mit Alt+F11 geöffnet hast wechselst du zwischen den Modulem indem du links einen Doppelklick auf das jeweilige Modul (Tanelle1,Modul1) machste.
Ein kleiner, unschöner Nebeneffekt ist mir noch aufgefallen:
Wenn in einer Zelle ein Wert eingetragen, jedoch anschließend
wieder gelöscht wird, bleibt eine nicht entfernbare „0“ darin
stehen, obwohl in der Zwischenspeicherungstabelle „Tabelle3“
der Datensatz ebenso nicht mehr vorhanden ist. Gibt es dafür
auch noch eine einfache Lösung ?
Formatiere G Benutzerdefiniert:
0,00;;
Gruß
Reinhard
If Target.Column 7 Then Exit Sub
A ist die erste Spalte von links, G die siebte Spalte.
Alles klar. Es wird also mit den Spaltenziffern gearbeitet und nicht mit den optischen Bezeichnungen. Darauf hätte ich irgendwie auch selbst kommen können
) Vielen dank 
Formatiere G Benutzerdefiniert:
0,00;;
Hat super funktioniert. Danke
Kannst Du mir noch kurz die Funktionsweise erklären bzw. was die „;“ genau bedeuten in dem Fall, damit ich es für die Zukunft weiß und entsprechend anwenden kann ?
Vielen vielen Dank!
Beste Grüße
Liest Silex mit? 
Hallo SK,
If Target.Column 7 Then Exit Sub
A ist die erste Spalte von links, G die siebte Spalte.
Alles klar. Es wird also mit den Spaltenziffern gearbeitet und
nicht mit den optischen Bezeichnungen. Darauf hätte ich
irgendwie auch selbst kommen können
) Vielen dank 
noch was
Target.Count kann dich sehr verwirren.
Korrekt ausgeschrieben müßte es
Target.Cells.Count
heißen.
Ansonsten müßtest du diese eine Codezeile mit deinen Vorkenntnissen lesen können.
Target ist immer die Zelle oder die Zellen wo etwas geändert wurde durch manuelle Eingabe oder Reinkopieren.
Wenn du also z.B. durch Reinkopieren in G mehrere zellen gleichzeitig änderst müßte man den Code umschreiben.
Formatiere G Benutzerdefiniert:
0,00;;
Hat super funktioniert. Danke
Kannst Du mir noch kurz die
Funktionsweise erklären bzw. was die „;“ genau bedeuten in dem
Fall, damit ich es für die Zukunft weiß und entsprechend
anwenden kann ?
Deshalb der für dich seltsame Betreff. Von diesen seltsamen Formatierungspielchen habe ich nicht die geringste Anhnung.
Ich weiß zwar man kann da bis zu drei Semikolons benutzen, quasi damit vier parameter trennen um etwas zu erreichen.
Wie z.B. positive Werte in Blau, Negative in Rot.
Leider fand ich noch nie eine Internetseite wo das ausführlich erläutert wird.
Vielleicht kann dir das Renè, Thomas oder ein(e) andere® Wissende® erläutern.
Achja, was auch geht alternativ, ist in Optionen das Häkchen bei Nullwertanzeige wegmachen. das gilt dann pro Blatt.
Gruß
Reinhard
Grüezi zusammen
Formatiere G Benutzerdefiniert:
0,00;;
Hat super funktioniert. Danke
Kannst Du mir noch kurz die
Funktionsweise erklären bzw. was die „;“ genau bedeuten in dem
Fall, damit ich es für die Zukunft weiß und entsprechend
anwenden kann ?
Deshalb der für dich seltsame Betreff. Von diesen seltsamen
Formatierungspielchen habe ich nicht die geringste Anhnung.
Ich weiß zwar man kann da bis zu drei Semikolons benutzen,
quasi damit vier parameter trennen um etwas zu erreichen.
Wie z.B. positive Werte in Blau, Negative in Rot.
Leider fand ich noch nie eine Internetseite wo das ausführlich
erläutert wird.
Die Online-Hilfe gibt hier zum Thema Zahlen- und Zellen-Formatcodes so einiges her.
Es ist korrekt, dass die Semikoli die Bereiche in positive, negative, Nullwerte und Texte unterteilt.
Aber alle möglichen Kombinationen kann hier wohl niemand aufzählen, am besten also das Ganze mal selbst studieren und ggf. nachfragen 
Mit freundlichen Grüssen
Thomas Ramel
Ich weiß zwar man kann da bis zu drei Semikolons benutzen,
quasi damit vier parameter trennen um etwas zu erreichen.
Wie z.B. positive Werte in Blau, Negative in Rot.
Leider fand ich noch nie eine Internetseite wo das ausführlich
erläutert wird.
Grüzie Thomas,
Die Online-Hilfe gibt hier zum Thema Zahlen- und
Zellen-Formatcodes so einiges her.
sorry, bei manchen Dingen ist meine F1 taste kaputt
)
Es ist korrekt, dass die Semikoli die Bereiche in positive,
negative, Nullwerte und Texte unterteilt.
Na, das ist doch mal 'ne Aussage, abgesehen von text, muß ich noch testen habe ich’s jetzt begriffen:
[Rot]0,00 ;[Blau]-0,0 ;[Gelb]0,0000
eben selbst entwickelt *stolz schau*
Jetzt ist mir auch 0,00;; klar *glaub*
Gebe ich nur als Format
0,00
an so behandelt Excel Nullwerte als Standard, also zeigt sie an
Mit
0,00;;
sage ich aber Excel es soll die Nullwerte nicht nach Standard anzeigen sondern nachdem was ich angebe, da ich nix angebe, wird auch nix angezeigt.
Aha, so funktioniert das. danke für deinen einen Satz.
Gruß
Reinhard