Summenproblem
#1
Hallo,

ich habe eine Tabelle mit einer Spalte, in der nur Zahlen stehen.
Die Zahlen wurden manuell erfasst, mit keiner, einer oder max. 2 Kommastellen.
Es sind 558 Zahlen.
Wenn ich am Ende eine Summe mache, und die Ergebniszelle mit 8 Kommastellen formatiere, kommt eine Zahl heraus, die an der 8. Stelle eine 1 hat.
Ich habe alle Zahlen kontrolliert, es ist keine dabei mit mehr als 2 Kommastellen.
Wenn ich Zellen einzeln nacheinander markiere und rechts unten im Excel die Summe beobachte, kommt plötzlich nach der 346 Zahle diese 1 dazu.
Die Summe der Zahlen bis dahin liegt bei 5.995.156,96000000
Die nächste Zahl ist 3.231,23 und dann ist die Summe plötzlich 5.998.388,19000001
Ich habe auch versucht die Zahlen mittels runden in einer neuen Spalte umzuwandeln und zu summieren. Immer das gleiche Ergebnis!

Kann mir jemand sagen was da los ist?
LG Herbert
Windows 10
Office 365
Top
#2
Hola,

https://www.google.de/?gws_rd=ssl#safe=off&q=gleitkomma+problematik

Aber eigentlich sollte das Runden in eine neue Spalte geholfen haben.

Gruß,
steve1da
Top
#3
Hallo,

normal sollte das Problem mit der RUNDEN() Idee gelöst sein,

kannst du (d)eine (Beispiel)datei hochladen?
Top
#4
Hallo,

bei einer Multiplikation oder Division würde ich das verstehen, aber es werden Zahlen die nicht aus einer Formel stammen addiert.

Beispiel im Anhang.

Vielleicht ist eine Einstellung im Excel falsch?


Angehängte Dateien
.xlsx   Summenproblem.xlsx (Größe: 17,31 KB / Downloads: 7)
LG Herbert
Windows 10
Office 365
Top
#5
Hallo,

das Problem taucht genauso bei Subtraktionen auf, ist bei Deinen Zahlen auch nicht durchgängig:

Arbeitsblatt mit dem Namen 'Tabelle1'
 B
4367.637.805,56000001
4377.667.396,07000000
4387.674.983,74000000
4397.680.853,42000000
4407.691.016,90000001
4417.710.088,61000000
4427.713.088,61000000
4437.753.514,48000001
4447.821.730,27000001

ZelleFormel
B436=SUMME($A$1:A436)
B437=SUMME($A$1:A437)
B438=SUMME($A$1:A438)
B439=SUMME($A$1:A439)
B440=SUMME($A$1:A440)
B441=SUMME($A$1:A441)
B442=SUMME($A$1:A442)
B443=SUMME($A$1:A443)
B444=SUMME($A$1:A444)
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#6
Hallo Herbert,

ist dir aufgefallen, dass sich die "falsche" 1 auf der 15. (=letzte) signifikanten Stelle der Zahl befindet. Das ist die Genauigkeit von Gleitkommazahlen.
Durch die Art der Binärdarstellung und Berechnung dieser Zahlen kann es in der letzten Ziffer schon einmal zu Rundungsdifferenzen kommen.
Das ist auch der Grund warum man berechnete Gleitkommazahlen nie auf Gleichheit prüfen soll.

Wenn dich das wirklich stört must du Excel dazu bringen die Ziffern ganzzahlig zu berechnen (hier ist der Rechner genau; bei deinen Zahlen ist dies möglich).

zB mit der selbst geschriebenen Funktion in einem allgemeinen Modul:


Code:
Option Explicit
Public Function LngSummeR(rngSumme As Range, intAnz As Integer) As Double
Dim lngS1 As Long
Dim lngS2 As Long
Dim rngZelle As Range

lngS2 = 0
For Each rngZelle In rngSumme
    lngS1 = Round(rngZelle.Value, intAnz) * 10 ^ intAnz
    lngS2 = lngS2 + lngS1
Next rngZelle

LngSummeR = lngS2 / 10 ^ intAnz

End Function

Kannst diese Funktion einmal in die Zelle neben deiner normalen Summe nutzen und anschliessend über Formeln prüfen ob die Werte gleich sind und ob die Differenz gleich 0 ist . Du wirst dich (vielleicht jetzt nicht mehr) wundern.


ps. Das Runden hat natürlich nichts gebracht, da es die Zahlen nur kopiert hat.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#7
Hallo,

Wenn dich das interessiert kannst du in den Spalten B-G einmal folgende Formeln schreiben und die Zahlen mit genügend vielen Nachkommastellen darstellen:

B: =SUMME($A$1:A1)
C: =LngSummeR($A$1:A1;2)
D: =B1=C1
E: =B1-C1
F: =E1=0
G: =(B1-C1)=0
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#8
Hallo Helmut,

Sorry aber das ist mir zu hoch.

Wie kann es bei Zahlen, die nicht mehr als 2 Kommastellen haben  (weil sie manuell eingetragen wurden und nicht berechnet) und die nur addiert werden eine Gleitkommastelle vorkommen?

Trotzdem, wie nutze ich die Funktion genau?
LG Herbert
Windows 10
Office 365
Top
#9
(02.02.2017, 18:31)herbert0803 schrieb: Wie kann es bei Zahlen, die nicht mehr als 2 Kommastellen haben  (weil sie manuell eingetragen wurden und nicht berechnet) und die nur addiert werden eine Gleitkommastelle vorkommen?

Moin,
ganz "platt" gesagt: Es ist nun einmal so. 
Und wenn du nur die ersten 4-5 Beiträge aus dem Link, den dir Steve im Beitrag#2 gegeben hat auch gelesen hättest, dann müsste dir auch klar sein, dass das nicht änderbar ist. Auch wenn das "Warum" nicht unbedingt für Jedermann nachvollziehbar ist. In Excel gibt es dafür aber noch die Möglichkeit, alles "wie angezeigt" berechnen zu lassen.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top
#10
Hallo Herbert,

a) Nachkommazahlen = Gleitkommazahlen
Sorry hätte auch "Zahlen mit der Möglichkeit Nachkommastellen zu haben" schreiben können.

b) zur Nutzun der Funktion:

1) Im Menu "Entwicklertools" "Code anzeigen" anklicken.
Hierdurch wir der VBA-Editor in einem neuen Fenster angezeigt.
2) Im Projektfenster (links) das VBA-Projekt der Datei rechts anklicken und im Kontextmenu "Einfügen" und "Modul" auswählen.
Hierdurch werden im Projektfenster das Objekt "Module" und das Objekt "Module1" angelegt.
3) Im Projektfenster (links) das Objekt "Module1" doppelklicken.
Hierdurch wird der Curser in den Editor für dieses Modul gesetzt.
4) Meinen Code in den Editor kopieren.
5) Das Fenster für VBA-Editor schliessen.


6) Wenn du jetzt in einer Zelle nach dem "=" die Funktion "LngSummeR" schreiben willst, solltest du sie schon nach dem "L" zur Auswahl angezeigt bekommen.

Achtung!
Da die Datei jetzt ein Makro (Die Funktion) enthält muss sie als "Excel-Arbeistmappe mit Makros (*.xlsm)" abgespeichert werden. Ansonsten wird das Makro nicht mit abgespeichert und ist beim nächsten Öffnen nicht mehr vorhanden.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste