Seite 1 von 1

Master-Zeilen

Verfasst: Do, 05.04.2007 11:37
von Ogridi
Hi!

Ich führe schon seit längerem eine Einkaufs-Liste, in der in der ersten Spalte der Einzelpreis, in der zweiten die Anzahl und in der dritten der Gesamtpreis aufgeführt wird. Logischerweise lasse ich mir letzteren berechnen.

Wenn ich jetzt ein neues Listenelement einfüge, muss ich immer die Formel mitkopieren. Ich hab auch schon einige Zeilen im Vorraus beschrieben, aber das ist a) sehr nervig und b) erreicht man dann auch irgendwann das Ende und muss wieder neu kopieren. Unabhängig davon muss ich aber auch manchmal Zeilen zwischen den anderen einfügen, die dann logischerweise auch noch keine Formel enthalten.

Kann man nicht einfach so eine Art "Master"-Zeile kreieren, die dann in alle neuen / noch nicht benutzten Zeilen eingesetzt wird?


Ein ähnliches Problem ergibt sich, wenn ich die Summe aller Einkäufe berechnen will. Man muss immer wieder die Formel überarbeiten ("=SUMME(C1:C5)", "=SUMME(C1:C10)", "=SUMME(C1:C50)"), um auch alle Elemente mit aufzusummieren. Kann man nicht einfach die Summe einer gesamten Spalte bilden? (die Variante SUMME(C1:C10000000) finde ich nicht wirklich gut und würde ich eigentlich nur ungern benutzen)


Vielen Dank für Eure Hilfe,
Ogridi

Verfasst: Do, 05.04.2007 12:12
von Karolus
Hallo Ogridi

Zum "verlängern" der Gesamtpreisspalte C genügt (nach Ausfüllen von A und B) ein Doppelklick auf das Kästchen unten rechts im Rahmen der letzten Formelzelle in Spalte C.

Zur Anpassung der Gesamtsumme reichen 3 Mausklicks:
1. in die erste freie Zelle in Spalte C
2. aufs Summenzeichen in der Eingabeleiste
3. auf den Haken rechts daneben

Gruß Karo

Verfasst: Do, 05.04.2007 12:41
von Eia
Wenn ich Dich recht verstehe, führst Du die Gesamtsumme als eine Art Saldo-Spalte, z.B. in Spalte D. Wenn Du die erste Summenformel absolut bzw. teilweise absolut formulierst, kannst Du sie auch einfach kopieren:
=SUMME(C$1:C2)
wird beim Kopieren (s. Hinweis oben) automatisch zu
=SUMME(C$1:C3)
=SUMME(C$1:C4)
=SUMME(C$1:C5)
...

Wenn Du die Summe nur in jeder fünften Zeile sehen willst, dann hilft eine WENN-Abfrage. Die Formel:
=WENN(REST(ZEILE();5)=0;SUMME(C$1:C2);"") in D2 ergibt beim Kopieren nach unten nur in jeder fünften Zeile ein Ergebnis.

mfG

Verfasst: Do, 05.04.2007 13:18
von Ogridi
@Karolus: Zugegeben ist es nicht wirklich viel Aufwand, so eine Spalte zu verlängern. Aber dadurch, dass ich es halt ziemlich häufig machen muss (und das mit praktisch absoluter Sicherheit), ist es schon irgendwo nervig. Ich fände halt eine Lösung, bei der ich der Tabelle einmal sage, dass in jedem Feld Cx "=Ax*Bx" stehen soll, praktischer.

@Eia: Was in der Spalte C stehen soll, habe ich ja schon geschrieben. Die Gesamtsumme wird dann in einer Zelle auf einem anderen Blatt ausgegeben und soll alle Elemente der Spalte C aufsummieren.

Verfasst: Do, 05.04.2007 13:33
von Eia
Ogridi hat geschrieben:@Karolus: Zugegeben ist es nicht wirklich viel Aufwand, so eine Spalte zu verlängern. Aber dadurch, dass ich es halt ziemlich häufig machen muss (und das mit praktisch absoluter Sicherheit), ist es schon irgendwo nervig. Ich fände halt eine Lösung, bei der ich der Tabelle einmal sage, dass in jedem Feld Cx "=Ax*Bx" stehen soll, praktischer.
In allen 65000 Zeilen?
Aber Spass bei Seite:
Je mehr Formeln man in einem Dokument hat, je mehr Rechenleistung wird benötigt (denn auch die "nicht benutzten" Formeln werden immer aktualisiert) und je mehr geht das auf die Leistung, ist also gar nicht wünschenswert.
Was ich so oder so nicht verstehe:
irgendwann musst Du ja durch irgendwas veranlassen, dass die Formel-Zellen gefüllt werden. Wie hattest Du Dir das denn vorgestellt, wenn Du die Zeilen nicht "im Voraus beschreiben" möchtest?
@Eia: Was in der Spalte C stehen soll, habe ich ja schon geschrieben. Die Gesamtsumme wird dann in einer Zelle auf einem anderen Blatt ausgegeben und soll alle Elemente der Spalte C aufsummieren.
Dann verstehe ich nicht, was Dir an der Variante: SUMME(C1:C10000000) unsympatisch ist?
Mann müsste natürlich einen anderen Bis-Wert einsetzen, die maximale Anzahl Zeilen liegt bei 65536. Aber es liesse sich sicher auch eine Formel finden, die von allein herausfindet, welches die letzte zu addierende Zeile ist. Würde Dir das eher zusagen?

mfG

Verfasst: Do, 05.04.2007 17:29
von FranzX
Wenn du eine Formel willst, die immer die Summe der Spalte ausweist, kannst du folgende Formel verwenden.
z.B. die Formel für die Summe der SpalteC:

=SUMME(INDIREKT("C1:C"&ANZAHL2(C1:C65000)))

Wenn dir eine Wenn() Formel nicht gefällt, oder du eine Formel willst, die versteckt in allen Zellen der Spalte C hinterlegt ist, dann könntest du auch mit "Gültigkeit" arbeiten.

Markiere die Spalte C, rufe Daten|Gültigkeit auf und definiere als Gültigkeit:
Zulassen Liste
und erfasse bei Einträge die Formel:

=INDIREKT(ADRESSE(ZEILE();SPALTE()-2))*INDIREKT(ADRESSE(ZEILE();SPALTE()-1))

Nun brauchst du im erscheinenden Listenfeld der Zelle nur die Formel anzuklicken und das Ergebnis der Berechnung wird in die Zelle eingefügt.
Diese Gültigkeit funktioniert auch beim Einfügen von Zellen.
Übrigens funktioniert auch hier der Doppelklick auf das Aufziehkästchen.

Vielleicht ist dies in deinem Sinne

Viele Grüße
FranzX
--------------------------------------------
TIPP: OpenOffice.org Calc - Formeln und Funktionen
TIPP: Writer-Tuning; 194 clevere Tips und Tricks für OpenOffice.org 2 und StarOffice 8.

Verfasst: Fr, 06.04.2007 00:46
von Ogridi
Je mehr Formeln man in einem Dokument hat, je mehr Rechenleistung wird benötigt (denn auch die "nicht benutzten" Formeln werden immer aktualisiert) und je mehr geht das auf die Leistung, ist also gar nicht wünschenswert.
Zugegeben, daran hatte ich noch gar nicht gedacht.
irgendwann musst Du ja durch irgendwas veranlassen, dass die Formel-Zellen gefüllt werden. Wie hattest Du Dir das denn vorgestellt, wenn Du die Zeilen nicht "im Voraus beschreiben" möchtest?
Das ist eigentlich das zentrale Problem ^^. Sry, dass man das nicht gleich irgendwie raushören konnte (*gleich-in-den-nächsten-"Wie stelle ich meine Probleme vernünftig da?"-Kurs-einschreib*). Wenn man das Leistungsproblem noch dazunimmt, sogar ein sehr wichtiges Problem finde ich.

Sagen wir mal der Einfachheit halber: Sobald ich irgendwo, irgendwas in eine Zeile eintrage, brauche ich auch die Formel - in dem Moment sollte sie optimaler Weise in die zugehörige Zelle eingesetzt werden. - Und das sollte halt möglichst in allen Zeilen funktionieren - ohne dass ich sie vorher in jede einzeln reinschreiben muss...
Aber es liesse sich sicher auch eine Formel finden, die von allein herausfindet, welches die letzte zu addierende Zeile ist. Würde Dir das eher zusagen?
Jep. Absolut.
Wenn du eine Formel willst, die immer die Summe der Spalte ausweist, kannst du folgende Formel verwenden.
z.B. die Formel für die Summe der SpalteC:
Vielen Dank! Ich kannte den INDIREKT-Befehl bislang nicht. Diese Formel sollte das Summen-Problem lösen.

Zur Gültigkeit: Auch diese Funktion kannte ich bislang noch nicht. Es gefällt mir auf alle Fälle, dass sich diese Eigenschaft für alle Zellen einer Spalte setzen lässt. Aber auswählen muss man es letztlich doch wieder selbst. Da kommt dann das oben beschriebene Problem auf.

Vielleicht zum Abschluss noch ein Versuch, eben dieses klar zu machen. In Datenbankanwendungen lässt sich leicht in einer Abfrage ein Wert einbauen, der aus anderen Datenfeldern des Datensatzes berechnet wird. Dann ist für alle Datensätze die neu hinzukommen klar, dass auch für sie dieser Wert benötigt und daher berechnet wird. Man muss nicht extra die Formel eingeben oder auswählen. Genau so eine Formel hätte ich gerne für meine Liste...

Vielen Dank Ihr beiden,
Ogridi

Verfasst: Fr, 06.04.2007 08:44
von Eia
FranzX hat geschrieben: Wenn dir eine Wenn() Formel nicht gefällt, oder du eine Formel willst, die versteckt in allen Zellen der Spalte C hinterlegt ist, dann könntest du auch mit "Gültigkeit" arbeiten.

Markiere die Spalte C, rufe Daten|Gültigkeit auf und definiere als Gültigkeit:
Zulassen Liste
und erfasse bei Einträge die Formel:

=INDIREKT(ADRESSE(ZEILE();SPALTE()-2))*INDIREKT(ADRESSE(ZEILE();SPALTE()-1))
Das ist klasse. Wie bist Du denn darauf verfallen, eine Formel in eine Gültigkeitsliste zu schreiben?
Das würde vermutlich auch das Problem mit der Rechenleistung lösen, oder nicht? Solange die Formel nicht aktiviert ist, wird sie ja wohl nicht berechnet und man könnte die Gültigkeitsprüfung zum voraus in die ganze Spalte kopieren.
mfG

Verfasst: Fr, 06.04.2007 08:58
von Eia
Ogridi hat geschrieben:Vielleicht zum Abschluss noch ein Versuch, eben dieses klar zu machen. In Datenbankanwendungen lässt sich leicht in einer Abfrage ein Wert einbauen, der aus anderen Datenfeldern des Datensatzes berechnet wird. Dann ist für alle Datensätze die neu hinzukommen klar, dass auch für sie dieser Wert benötigt und daher berechnet wird. Man muss nicht extra die Formel eingeben oder auswählen. Genau so eine Formel hätte ich gerne für meine Liste...
Calc-Formeln funktionieren immer gleich:
Sie "holen" ein Ergebnis an die Stelle, an der sie sich befinden. D.h. zuerst muss die Formel irgendwo stehen, bevor sie an deiser Stelle etwas bewirken kann.
Es gibt keinen Automatismus "geh an die und die Stelle und tu das und das".
Etwas wie "füge in Zelle sowieso eine Formel ein, wenn in Zelle sowieso etwas passiert", müsste schon programmiert werden, gehört nicht zum Standard einer Tabellenkalkulation.
Dein Vergleich mit der Datenbank:
Die hat zu Beginn 0 Datensätze. D.h., jeder neue Datensatz ist eine Neuanlage. Da hast Du Deinen Auslöser. Der neue Datensatz wird anhand der vorhandenen Definitionen erst in dem Moment erstellt, in dem Du ihn brauchst und da ist Dein Rechenfeld genauso ein Feld wie jedes andere, das bei der Neuanlage eines Datensatzes per Definition angelegt werden muss.
Eine Tabellenkalkulation hat ihren festen Aufbau schon. Es gibt keinen Erstellungsmechanismus, wenn Du eine neue Zeile benutzt. Und daher auch keine Automatik, welche Zellinhalte zu einem bestimmten Zeitpunkt erstellt.
Formeln in DB-Feldern beziehen sich immer auf Inhalte des gleichen Datensatzes, während Formeln in Tabellenzellen sich auf beliebige Zeilen beziehen können. Eine Tabellenzeile ist per Definition keine Datensatzeinheit, auch wenn der tabellarische Aufbau es manchmal so erscheinen lässt.
Tabellenkalkulationszelle <> Datenbankfeld

mfG

Verfasst: Fr, 06.04.2007 10:24
von Ogridi
Ok. Dann werd ich das mal so hinnehmen.

Vielleicht kann man ja sich ja doch auch über die Gültigkeitsprüfung behelfen :D .

Alles Gute & frohe Ostern!
Ogridi

Verfasst: Fr, 06.04.2007 10:41
von FranzX
Die Gültigkeitsliste verwende ich des öfteren um zum Beispiel kleine "Datenbankauswertungen" durchzuführen.
Angenommen die Daten stehen in den Spalten A:G

Dann hinterlegst du die Spalte H mit einer Gültigkeitsprüfung, in der du folgende Formeln einfach untereinander schreibst:
Zulassen: Liste

Formeln im Feld: Einträge
Für die Summe der Datenzeile:
="Gesamt - "&SUMME(INDIREKT("b"&ZEILE()&":" & ADRESSE(ZEILE();7)))&" €"

Für den MAX-Wert:
="MAX - "&MAX(INDIREKT("b"&ZEILE()&":" & ADRESSE(ZEILE();7)))&" €"
usw.

Du kannst alle Auswertungsformeln die du brauchst einfach untereinanderschreiben.
Anschließend kannst du im DropDown-Feld der Gültigkeitsliste die Formel auswählen und die Datenbankzeile in einer Zelle analisieren.

Vorteile:
Performance-Probleme hast du nicht, solange die Formel nicht aufgerufen wurde. Du kannst auch die Formel in der Zelle löschen, ohne gleich die ganze Formel zu zerstören.

Nachteil:
Umständliche Formelerstellung, weil die Gültigkeitsliste nur "Text" darstellt, die erst bei der Übernahme wie eine in die Datenzeile geschriebene Formel wirkt. Bereichsangaben Wie A1:G1 sind nicht möglich, weil diese Art der Adressierung bei jeder Gültigkeitsabfrage eben nur den Text A1:G1 auswertet ohne die Bezüge anzupassen.

Viele Grüße
FranzX
--------------------------------------------
TIPP: OpenOffice.org Calc - Formeln und Funktionen
TIPP: Writer-Tuning; 194 clevere Tips und Tricks für OpenOffice.org 2 und StarOffice 8.