Am 03.03.2016 um 09:51 schrieb Andreas Heinlein:
> 
> ich habe ein Problem mit einer Calc-Tabelle und bin mir nicht sicher, ob 
> ich zu doof bin oder das ein Bug ist.
> 
> Die Datei hat zwei Tabellen, eine "Daten"-Tabelle mit Personendaten, 
> u.a. Name und Geburtsdatum. Die zweite soll diverse Daten auswerten, 
> u.a. aus dem Geburtsdatum das Alter berechnen, und zwar immer 
> zeilenweise entsprechend, d.h. in Zeile 2 der Auswertungstabelle steht 
> das Alter der Person in Zeile 2 der Datentabelle.
> 
> In der Auswertungs-Tabelle habe ich folgende Formel: 
> =JAHRE(Daten.B2;HEUTE();1). Diese wird nach unten ausgefüllt, also:
> =JAHRE(Daten.B2;HEUTE();1)

*Nochmal* B2?

> =JAHRE(Daten.B3;HEUTE();1)
> =JAHRE(Daten.B4;HEUTE();1)
> =JAHRE(Daten.B5;HEUTE();1)
> ... usw...
> 
> Wenn ich jetzt in der Daten-Tabelle z.B. Zeile 3 lösche, ändern sich die 
> Bezüge in der Auswertungs-Tabelle so:
> =JAHRE(Daten.B2;HEUTE();1)
> =JAHRE(Daten.B3;HEUTE();1)
> =JAHRE(Daten.B3;HEUTE();1)
> =JAHRE(Daten.B4;HEUTE();1)
> =JAHRE(Daten.B5;HEUTE();1)

Das ist auch verständlich und korrekt; durch Löschen der Zeile 3 in der
Quelltabelle verschieben sich natürlich alle darauf folgenden Zeilen,
sprich die ehemals *vierte* Zeile wird zur jetzt *dritten* Zeile. Die
Verweise werden entsprechend angepasst.

> Mache ich die Löschung rückgängig, ändern sich die Bezüge erneut:

Logisch; alle nachfolgenden Zeilen verschieben sich erneut, mit
entsprechender Anpassung der Nummerierung.

> Das ist absolut nicht mein Ansinnen, die Bezüge in der Auswertung sollen 
> einfach so bleiben. 

*Wie* bleiben, sprich was genau willst Du worauf verwiesen haben?

*Momentan* bleiben die relativen Verweise 'as is' erhalten, d. h. wenn
in der verweisenden Tabelle /vorher/ auf die Zeile "Nudeln" der
Quelltabelle verwiesen wird, dann wird auch /nachher/ auf die Zeile
"Nudeln" verwiesen sein, und nicht etwa auf die Zeile "Sauce".

Wenn ich Dich richtig interpretiere, willst Du aber, dass nicht der
*Verweis* sondern der *Index* erhalten bleibt, sprich die Zelle dann auf
die Zeile "Sauce" verweisen soll. Dann kannst Du nicht mit direkten
Verweisen arbeiten, sondern musst entweder über INDEX gehen:

| =JAHRE(INDEX(Daten.$B$2:$B$100;ZEILE()-1;1);HEUTE();1)

oder über VERSCHIEBUNG:

|
=JAHRE(VERSCHIEBUNG(Daten.$B$2;ZEILE()-ZEILE(Auswertung.$B$2);0);HEUTE();1)

oder über die explizite Berechnung der Adresse (aber das ist, naja ...):

| =JAHRE(INDIREKT(ADRESSE(ZEILE(); SPALTE($B$2);4));HEUTE();1;1;"Daten")

oder aber (wohl am besten) über VERWEIS bzw SVERWEIS:

| =JAHRE(SVERWEIS(Auswertung.A2;Daten.$A$2:$B$7;2;0);HEUTE();1)

Wichtig ist dabei, dass die Angaben der Quellbereiche usw. wirklich als
*absolute* Adressen angegeben werden, damit diese beim Kopieren von
Zelle zu Zelle eben genau *nicht* mit angepasst werden.

Im Zweifelsfall schaust Du Dir erst mal in einer oder mehreren
Hilfsspalten an, welche Adresse überhaupt gebildet wird
("=ADRESSE(ZEILE(); SPALTE($B$2);4)"), auf welchen Zellinhalt dadurch
verwiesen wird, usw.

BTW ist die gleiche Vorgehensweise ganz allgemein erforderlich, wenn auf
Daten *außerhalb* des eigenen Datensatzes

Wolfgang
-- 

-- 
Liste abmelden mit E-Mail an: [email protected]
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

Antwort per Email an