Calc: Bei der Berechnung einer Summe werden Felder ausgelassen

Hallo,

Mein Name ist Ernst, ich bin Winzer, Südlich von Mainz. Ab und an programmiere ich in PHP.

Heute ist mir ein merkwürdiges Verhalten beim Berechnen einer Summe aufgefallen. Die Ursache habe ich gerade eben auch gefunden. Danach konnte ich das Problem auch in der Originaltabelle lösen.

Ich habe die problematische Spalte aus der Originaltabelle kopiert und in eine neue Tabelle eingefügt:
https://drive.google.com/open?id=0B9JW9rdtKs2oeEdlcTdCZzZ3TTA

* Da ist eine Spalte mit Zahlen. Am Ende wird die Spalte summiert.
* Die Summe ist jedoch unvollständig. Es werden Zahlen ausgelassen. Diese Zahlen habe ich rot markiert.
* In einer Addition werden die Zahlen jedoch korrekt behandelt.

Die Ursache, dass die rot markierten Zahlen nicht mitgerechnet werden, habe ich nach entzippen der .ods in der 'content.xml' gefunden.
Die betroffenen Zahlen sind vom Typ 'string' statt 'float'.

- Bei der Addition findet eine Typkonvertierung statt, bei SUM() nicht.
- Der Typ 'string' ist nicht unmittelbar erkennbar. Es ist möglich das Feld so zu formatieren, dass kein Hochkomma angezeigt wird, das zeigt das Feld vom Typ 'string' ist.

Durch Löschen der direkten Formatierung, kam das Hochkomma wieder zum Vorschein, ich konnte es entfernen und die Summe wurde wieder korrekt berechnet.

Ob das nun ein Bug oder ein Feature ist, was ich da entdeckt habe, können sicher andere beurteilen, die hier mitlesen. Ich bedanke mich fürs lesen meines Beitrags.

Grüße
      Ernst

P.S. Habe mir heute die Version 5.2.6.2 installiert um kein Schnee von gestern zu erzählen.

Hallo Ernst,

die Kategorie der roten Zahlen kannst Du auch ohne entzippen der ODS-Datei erkennen:

1. Zelle markieren -> [Format] [Zellen][Zahlen]: Kategorie=Text Format=@ Format-Code=@
oder
2. Wendet man "Direkte Formatierung löschen" auf diese Spalte an, erkennt man ganz schnell die Text-Zahlen - sie werden nach links ausgerichtet und wenn man die entsprechenden Zellen anklickt, sieht man dann auch das vorangestellte ' Zeichen. Entfernt man es, funktioniert die SUMME-Funktion korrekt.

Hinweis: Ohne direkte Formatierung werden numerische Zahlen immer rechtsbündig (in der Zelle) angezeigt, Text-Zahlen werden immer (wie auch Text) linksbündig angezeigt.

Unterschied zwischen ' und @:

+ Mit vorangestelltem ' kann man eine Zahl direkt als Text eingeben. Das Format der Zelle ist dabei egal und wird dadurch auch nicht verändert, soweit ich das beobachten konnte.
+ Mit @ kann man eine Zelle mit dem Format TEXT formatieren. Da eingegebene Zahlen werden dann als Text behandelt und man sieht kein vorangestelltes ' Zeichen.

Hinter der Funktion SUMME bzw. dem arithmetischen Operator + verbergen sich offensichtlich unterschiedlich programmierte Algorithmen, so dass bei SUMME Text-Zahlen nicht wie gewünscht erkannt werden. Näheres habe ich allerdings dazu auch nicht gefunden.

Grüße
Hans-Werner

------ Originalnachricht ------

Hallo Ernst,
solche Fehler kann man am besten durch -> Ansicht -> Werte hervorheben bzw. Strg+F8 sichtbar machen.
So sieht man sofort, dass die beiden Zellen als Text formatiert sind (schwarze Schriftfarbe).
MfG Alois

Ich habe die problematische Spalte aus der Originaltabelle kopiert und
in eine neue Tabelle eingefügt:
https://drive.google.com/open?id=0B9JW9rdtKs2oeEdlcTdCZzZ3TTA

* Da ist eine Spalte mit Zahlen. Am Ende wird die Spalte summiert.
* Die Summe ist jedoch unvollständig. Es werden Zahlen ausgelassen.
Diese Zahlen habe ich rot markiert.

Diese vermeintlichen Zahlen sind in Wirklichkeit keine Zahlen, sondern
Text (der halt zufälligerweise aus Ziffern besteht). Und u. a. die
Funktion SUMME ignoriert Text.

* In einer Addition werden die Zahlen jedoch korrekt behandelt.

Im Gegensatz zur Funktion SUMME versucht Calc bei einer *direkten*
Rechenoperation mit einer Zelle, diese in eine Zahl um zu konvertieren.

Übrigens werden Texte auch bei Vergleichen nicht konvertiert. Ein
"=A1=B1" ergibt 'falsch', wenn in A1 der Text "1" steht, und in B1 die
Zahl 1. Integriert man /vor/ dem Vergleich jedoch eine Rechenoperation,
indem man "=(A1+0)=(B1+0)" schreibt, ist das Ergebnis dagegen 'wahr'.

Die Ursache, dass die rot markierten Zahlen nicht mitgerechnet werden,
habe ich nach entzippen der .ods in der 'content.xml' gefunden.
Die betroffenen Zahlen sind vom Typ 'string' statt 'float'.

Genau.

- Bei der Addition findet eine Typkonvertierung statt, bei SUM() nicht.

Jepp; aber eben nur bei direkten Rechenoperationen mit einer Zelle.

- Der Typ 'string' ist nicht unmittelbar erkennbar. Es ist möglich das
Feld so zu formatieren, dass kein Hochkomma angezeigt wird, das zeigt
das Feld vom Typ 'string' ist.

Ja; es obliegt tem Benutzer, darauf zu achten. Du kannst z. B. eine
weitere Spalte oder Bedingte Formatierung benutzen, und das mit der
Bedingung 'ISTZAHL(<zelle>)=falsch' zu überprüfen und anzeigen zu lassen.

Durch Löschen der direkten Formatierung, kam das Hochkomma wieder zum
Vorschein, ich konnte es entfernen und die Summe wurde wieder korrekt
berechnet.

Du kannst auch einfach den betreffenden Bereich oder auch die ganze
Spalte (leider immer nur eine) markieren, und über 'Daten => Text in
Spalten' eventuelle Texte in Zahlen umwandeln lassen. Wenn Du in dem
Dialogfenser unten eine oder mehrere der Spalten markierst, kannst Du
ggf. auch diverse Datumsformate angeben, und sogar umgekehrt auch
Zahlen in Text verwandeln.

Wolfgang