Date: prev next · Thread: first prev next last
2015 Archives by date, by thread · List index


Hallo,

ich schlage mich gerade mit einem Problem herum, für das ich bisher
keine saubere Lösung finden konnte. Sicherlich kann mir hier jemand auf
die Sprünge helfen. Dafür schon im voraus vielen Dank!

Aufgabe:
In einer Writer-Vorlage gibt es eine Tabelle mit Platzhaltern in einer
Zeile, die von einem externen Programm in benötigter Anzahl kopiert und
mit Daten gefüllt wird (die Zeile, nicht die Tabelle) [1]. Oberhalb
dieser Zeile und auch direkt darunter stehen feste Daten bzw Formeln,
die Berechnungen anhand der eingefügten Daten vornehmen. Also etwa so:

        SpalteA | SpalteB
Zeile1: NAME    | ANZAHL
Zeile2: <name>  | <cnt>
Zeile3: Summe:  | sum(<B2>:<B2>)

Problem:
Die Vorlage weiss nicht, wie viele Zeilen eingefügt werden. Mal wird nur
eine Zeile genutzt, es können aber auch ein Dutzend oder mehr Zeilen
eingefügt werden. Den Beginn der Summenfunktion kann ich dabei noch
direkt adressieren, doch das Ende bekomme ich nicht zu fassen. Rein
logisch betrachtet ist es "die Zelle oberhalb der aktuellen Zelle". Doch
die angebliche relative Referenzierung ist ja faktisch eine absolute
Referenzierung, die bei Verschiebeoperationen mitgezogen wird. Da Writer
in Bezug auf die Tabellenfunktionen extrem begrenzt ist, habe ich auch
versucht, das Problem direkt in Calc zu lösen.

Folgendes habe ich getestet:

1) relative Referenzierung: sum(<B2>:<B2>)
Dies wird beim Einfügen weiterer Zeilen nicht erweitert, sondern
mitgezogen. Dies war auch absehbar, da LO nicht weiss, dass es die eine
Referenz belassen und die andere mitziehen soll.

2) relative + absolute Referenzierung: summe($B$2:B2)
Diese Möglichkeit aus Calc bietet Writer offenbar nicht an. Doch auch in
Calc wird diese Referenzierung nicht erweitert, sondern es werden beide
Referenzen mitgezogen.

3) Eine Adressierung über eine benannte Zelle funktioniert sowieso
nicht, da dies entweder die Überschrift wäre oder die zu kopierende
Zelle mit dem Platzhalter. Beides ist hier sinnlos.

4) Adressierung über VERSCHIEBUNG() in Calc
Da die Adressierung einer Zelle mitgezogen wird, dachte ich, ich könnte
die erste Zelle per VERSCHIEBUNG() referenzieren. Das funktioniert sogar
recht gut. Die Funktion "=SUMME(VERSCHIEBUNG(D2;1;0):D3)" wird beim
Einfügen zweier Zeilen geändert in "=SUMME(VERSCHIEBUNG(D2;1;0);D5)".
Leider gibt es die Funktion in Writer nicht.


Kennt jemand eine Lösung für Writer, die diese Aufgabe erledigen kann?
Mir geht es nicht speziell um VERSCHIEBUNG(), sondern um die
Aufsummierung einer unbekannten Anzahl von Zeilen.

System:
LMDE 64bit, LO 4.4.0.1, deutschsprachige Oberfläche

[1] Das Programm greift per UNO-Schnittstelle auf LO zu und geht dabei
folgendermaßen vor: die Zeile mit den Platzhaltern wird kopiert und
anschließend zeilenweise in benötigter Anzahl oberhalb der vorhandenen
Zeile eingefügt. Dann werden die Platzhalter durch die entsprechenden
Daten ersetzt.

Gruß
Ben


-- 
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.