Fehler 508 mit korrekten Klammern

Hi zusammen,
ich habe folgendes Problem:

die folgende Formel führt zu Fehler 508, obwohl die Klammern korrekt gesetzt zu sein scheinen. Wenn ich das Feld öffne, ein Leerzeichen hinter der letzten Klammer einfüge und Enter drücke verschwindet der Fehler 508.

=((((SUMMEWENN(B524:B525;B524;BK524:BK525)) *1,19) / (AD524)))

Ergänzender Hinweis:
Die Felder, aus denen die zu addierenden Werte bezogen werden sind alle fehlerfrei und korrekt. Das Dokument wird regelmäßig mittels eines Python-Scripts bearbeitet bzw. ergänzt. Mein Eindruck ist, dass die Berechnung der Zellen beim Öffnen von Calc nicht nochmal sauber durchläuft. Ein Teil der referenzierten Werte befindet sich spaltenmäßig hinter der Zelle, in welcher der Fehler 508 auftritt. Ich vermute daher, dass die jeweiligen Werte zum Zeitpunkt der Auswertung oben genannter Formel noch nicht berechnet wurden und es deshalb zum Fehler kommt. Ein Umstellen der Reihenfolge hätte für die vor- und nachgelagerten Prozesse einen großen Änderungsaufwand zur Folge, welchen ich nach Möglichkeit gerne vermeiden möchte.

Kennt jemand das Problem bzw. hat jemand eine Idee, wie ich es abstellen kann?

Ich würde mich sehr über Eure Unterstützung freuen.

Vielen Dank schonmal und schöne Grüße
Stefan

Hi!

das eine ist die schließende Klammer der Summe-Wenn-Formel und das andere die schließende Klammer um das Ergebnis dieser Summe-Wenn-Formel, welches mit 1,19 multipliziert werden soll. Von der Syntax her sollte es eigentlich passen, zumal die Formel nachdem ich sie mit einem Leerzeichen am Ende ergänz habe korrekt berechnet und angezeigt wird.

Viele Grüße
Stefan

Ich kann diesen “Fehler in der Klammerung” nicht mal reproduzieren. Welche LibreOffice Version eigentlich? Und bist du sicher, dass du hier exakt das gepostet hast, was den Fehler auslöst, und nicht eine korrigierte Formel?

Btw, Formelausdrücke bitte immer als Code in ``` triple backticks auf eigenen Zeilen vor und nach dem Code einschließen, so dass das Frontend hier kein vermeintlicheds Markup interpretiert. Ich hab das mal in deiner Frage gemacht.

Ich habe das auch einmal getestet. Zuerst mit den vielen Klammern und dann mit dem Ausdruck, der die gleiche Wirkung hat:

=SUMMEWENN(A1:A2;A1;B1:B2) *1,19 / C1

Funktioniert hier beides einwandfrei.

Was steht denn in den Feldern?

Hi Robert,

wenn ich die Formel von Hand eintrage wird sie auch bei mir korrekt ausgerechnet.
Die Formel unten wurde vorhin aus einem Python-Script heraus mittels der Bibliothek openpyxl exakt so eingetragen, wie sie unten aufgeführt ist. Öffne ich das Dokument anschließend mit Calc, so steht dort zunächst Fehler 508. Wenn ich anschließend ein Leerzeichen hinter die Formel mache (sodass aufgrund der “Änderung” eine Aktualisierung stattfindet), so verschwindet der Fehler und das korrekte Ergebnis wird angezeigt. Die Formel bleibt aber weiterhin die gleiche. Ich verwende LibreOffice Version 7.3.3.2 (x64).

=SUMMEWENN(B1337:B1338;B1337;BJ1337:BJ1338)*1,19/AD1337 + SUMMEWENN(B1337:B1338;B1337;BI1337:BI1338)*1,19/AD1337

Hier eine Beispieldatei, wo der Fehler anliegt. Wenn man eine der Zellen mit Fehler 508 editiert indem man ein Leerzeichen anfügt und anschließend mit Enter bestätigt, verschwindet der Fehler.

test.ods (12.7 KB)

Das ist kaputt im Dokument gespeichert:

of:=SUMIF([.A1:.A2]|[.A1]|[.D1:.D2]) *1.19/[.B1]

Beachte die | vertical bars anstatt des ; Semikolon Parameter-Separators, die in der OpenDocument Format OpenFormula (ODFF) Definition Array-Zeilen-Separatoren sind. Wenn das wiederum in deiner UI-Sprache bzw. den Settings ein ; Semikolon ist wird das stattdessen angezeigt. Wenn die Formel dann editiert und neu kompiliert wird, funktioniert sie wie beabsichtigt.

Was immer das openpyxl da macht, es macht es falsch.

Update:
Und da gibts wohl schon einen Bug zu: ";" character being replaced with "|" character when writing one formula (#1733) · Issues · openpyxl / openpyxl · GitLab .
Probier mal im Python-Code das , Komma statt des ; Semikolons als Parameter-Separator zu benutzen, ich glaube die Denke, das wie in der UI machen zu wollen ist falsch.

Ähm… openpyxl? Das openpyxl? openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 3.0.10 documentation. Und wie soll das mit LibreOffice / .ods Dateien funktionieren?

Hallo
Der Fehler tritt auch auf wenn xlsxwriter statt openpyxl verwendet wird.
In beiden Fällen wird das mit Komma als Parametertrennzeichen richtig exportiert.

import pandas as pd
 
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45, '=sumif(A2:A8,"*tag",B2:B8)']},
                  index=['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag','Total'])

# Create a Pandas Excel writer using XlsxWriter or openpyxl as the engine.
#exporter = "xlsxwriter"
exporter = "openpyxl"
with pd.ExcelWriter('aaaa_pandas_simple.xlsx', engine=exporter) as writer:

    df.to_excel(writer, sheet_name='Sheet1')
    df.to_excel(writer, sheet_name='Tabelle2')

@erAck: Das Script läuft über einen xlsx-Zwischenschritt. Der Fehler ist sowohl im *.xlsx als auch im späteren *.odt vorhanden.
@erAck @karolus: DANKE! Der Hinweis hat mein Problem gelöst: Komma statt Semikolon als Parametertrennzeichen beim Schreiben mit openpyxl

NEIN, wurde sie nicht… behaupte ich hier mal … sondern sie wurde mit englischem Funktionsnamen SUMIF erzeugt!

Ich korrigiere: Die eingetragene Formel wurde in Calc exakt identisch mit der korrekten dargestellt. Wir haben inzwischen gelernt, dass offensichtlich von openpyxl eine falsche Syntax geschrieben wurde, welche eine Korrektur durch Calc notwendig machte. Ist aber ja nun gelöst :slight_smile:

Bei dir gibts wohl Klammern im Sonderangebot?!
Sämtliche Klammerpaare mit Ausnahme der klammer nach SUMMEWENN( und EINER klammer vor dem )* sind ÜBERFLÜSSIG

Danke für die Rückmeldungen. Die Klammern sind sicher nicht nötig aber ja auch nicht falsch. Sie strukturieren die logische Abarbeitung der Formel. Auch nach Wegnahme dieser Klammern mit rein strukturierendem Charakter bleibt das Problem gleichermaßen bestehen.
Und: Auch mit vorhandenen - nicht zwingend nötigen - Klammern lässt sich der Fehler durch händisches Ergänzen eines Space-Zeichens hinter der Formel und anschließendem Enter beheben.

Da hast du GANZ SICHER RECHT… :disguised_face:

Damit wiederum hast Du dann auch Recht :partying_face: