Calc: Fehler in der Parameterliste in VERSCHIEBUNG()

Hallo,

analog zu meiner Frage in "Writer/Calc: echte relative Referenzierung in
Tabelle" [1] ist hier noch ein Problem mit VERSCHIEBUNG() aufgetaucht.

Folgendes funktioniert:
=ZELLE("ADRESSE")
=VERSCHIEBUNG(E8;-1;0)
=VERSCHIEBUNG($E$8;-1;0)

Die Kombination der beiden funktioniert jedoch nicht, sondern gibt den
Fehler 504 aus (Fehler in der Parameterliste):
=VERSCHIEBUNG(ZELLE("ADRESSE");-1;0)

Mit dieser Kombination wollte ich halbwegs elegant auf die Zelle
oberhalb der aktuellen Zelle zugreifen. Die Doku gibt leider nicht viel
her. Wo liegt hier mein Fehler? Hat jemand eine Idee?

LO 4.4.0.1 mit dt. Sprachpaket auf 64bit Linux

[1] gmane.comp.documentfoundation.libreoffice.user.german:13729

Gruß
Ben

Hallo Ben,

Folgendes funktioniert: =ZELLE("ADRESSE") =VERSCHIEBUNG(E8;-1;0)
=VERSCHIEBUNG($E$8;-1;0)

Die Kombination der beiden funktioniert jedoch nicht, sondern
gibt den Fehler 504 aus (Fehler in der Parameterliste):
=VERSCHIEBUNG(ZELLE("ADRESSE");-1;0)

Das ist aber auch was Anderes! :slight_smile:

Das Ergebnis von =ZELLE("ADRESSE") ist eine Zeichenkette und kein
Zellbezug. Der erste Parameter der Funktion VERSCHIEBUNG muss aber
ein Zellbezug und darf keine Zeichenkette sein.

=VERSCHIEBUNG("$E$8";-1;0)
ergibt genauso Fehler 504. Verstanden?

Mit dieser Kombination wollte ich halbwegs elegant auf die Zelle
oberhalb der aktuellen Zelle zugreifen.

Das geht ganz einfach mit =E7 :wink: (...wenn die aktuelle Zelle E8 ist).

Gruß,
Stefan

Hallo Ben,

Folgendes funktioniert: =ZELLE("ADRESSE") =VERSCHIEBUNG(E8;-1;0)
=VERSCHIEBUNG($E$8;-1;0)

Die Kombination der beiden funktioniert jedoch nicht, sondern
gibt den Fehler 504 aus (Fehler in der Parameterliste):
=VERSCHIEBUNG(ZELLE("ADRESSE");-1;0)

Das ist aber auch was Anderes! :slight_smile:

Das Ergebnis von =ZELLE("ADRESSE") ist eine Zeichenkette

Danke, Genau diese Info fehlte mir. Leider ist LO in der Hinsicht
einerseits schlecht (bzw falsch) dokumentiert und gibt andererseits auch
irreführende oder zu allgemeine Fehlermeldungen aus.

und kein Zellbezug. Der erste Parameter der Funktion VERSCHIEBUNG
muss aber ein Zellbezug und darf keine Zeichenkette sein.

Ich nehme an, dass ich aus dieser Zeichenkette nicht wieder einen
gültigen Zellbezug machen kann. Oder doch?

=VERSCHIEBUNG("$E$8";-1;0)
ergibt genauso Fehler 504. Verstanden?

Das sieht auch logisch aus. Leider zeigt LO als Ergebnis von
=ZELLE("ADRESSE") eben nur den Zellbezug und nicht, dass es sich um eine
Zeichenkette handelt.

Wobei ich mit =ZELLE("TYP";E8) angezeigt bekomme, dass hier tatsächlich
Text ausgegeben wird, während die Formel =ZELLE("ZEILE") einen
numerischen Wert zurück gibt. Zum Verzweifeln!

Mit dieser Kombination wollte ich halbwegs elegant auf die Zelle
oberhalb der aktuellen Zelle zugreifen.

Das geht ganz einfach mit =E7 :wink: (...wenn die aktuelle Zelle E8 ist).

:smiley: Ja, das wäre der simple Weg. Der führt allerdings dann in die Irre,
wenn durch Verschiebeoperationen der Zellbezug geändert wird. Die Angabe
dieser absoluten Adresse wird durch LO dann angepasst und so kann es
kommen, dass eben nicht mehr die Zelle über der aktuellen, sondern eine
andere referenziert wird. Das mag für die meisten Fälle auch ganz
richtig sein, doch gibt es eben Fälle, in denen der relative Bezug*
wichtiger ist als das festhalten an einer bestimmten Zelle.

Gruß
Ben

* als relativen Bezug bezeichne ich die echte relative Referenzierung.
Also die Angabe, wo sich das Ziel relativ zur aktuellen Zelle befindet.
Das kann naturgemäß nicht durch eine absolute Positionsangabe erfolgen,
wie es in LO (und OOo und sicher auch Excel und Konsorten) gefordert
wird. In LO kann ich global(!) einstellen, dass eine Excel-Notation mit
echter relativer Referenzierung genutzt wird (Excel R1C1). Aber ob damit
alle vorhandenen Tabellen und auch neue von extern kommende sauber
importiert werden, will ich nicht ausprobieren müssen. Auch habe ich
nicht ausführlich getestet, wie dann das Verhalten bei Verschiebungen
ist. Möglich dass es genauso abläuft.

Hallo nochmal,

Das Ergebnis von =ZELLE("ADRESSE") ist eine Zeichenkette

Ich nehme an, dass ich aus dieser Zeichenkette nicht wieder einen
gültigen Zellbezug machen kann. Oder doch?

Doch das geht mit INDIREKT

Dein Konstrukt wäre dann:

=VERSCHIEBUNG(INDIREKT(ZELLE("ADRESSE"));-1;0)

Aber da dreht es einem die Fußnägel auf. :wink:

Gruß,
Stefan

analog zu meiner Frage in "Writer/Calc: echte relative Referenzierung in
Tabelle" [1] ist hier noch ein Problem mit VERSCHIEBUNG() aufgetaucht.

Folgendes funktioniert:
=ZELLE("ADRESSE")

Da fehlt noch ein Parameter, nämlich der Bezug; ich bevorzuge aber

=ADRESSE(ZEILE($E$8);SPALTE($E$8);4;1)

o. ä., da das flexibler ist.

=VERSCHIEBUNG(E8;-1;0)
=VERSCHIEBUNG($E$8;-1;0)

Die Kombination der beiden funktioniert jedoch nicht, sondern gibt den
Fehler 504 aus (Fehler in der Parameterliste):
=VERSCHIEBUNG(ZELLE("ADRESSE");-1;0)

ZELLE liefert eine Zeichenkette, keine Adresse; Du musst entweder die
Adresse direkt eingeben, oder den String durch ein zusätzliches INDIREKT
wieder zurück in eine Adresse verwandeln:

=VERSCHIEBUNG(INDIREKT(ZELLE("ADRESSE";$E$8));-1;0)

Aber stattdessen kannst Du natürlich auch gleich

=VERSCHIEBUNG($E$8;-1;0)

schreiben.

Mit dieser Kombination wollte ich halbwegs elegant auf die Zelle
oberhalb der aktuellen Zelle zugreifen.

=VERSCHIEBUNG(INDIREKT(ADRESSE(ZEILE();SPALTE()));-1;0)

Wolfgang

An der Stelle frage ich mich auch, wer sich die Namen für die Funktionen
ausdenkt. Auf etwas wie INDIREKT muss man erst mal kommen.

Aber einmal ausprobiert und Tatsache, es funktioniert wie gewünscht. Das
Konstrukt sieht wirklich gruslig aus, tut aber letztendlich das, was ich
suchte.

So, und jetzt das ganze bitte noch für Tabellen in Writer :lol:

Gruß
Ben

Hi Wolfgang,

Folgendes funktioniert:
=ZELLE("ADRESSE")

Da fehlt noch ein Parameter, nämlich der Bezug; ich bevorzuge aber

Der zweite Parameter ist definitionsgemäß optional, also nicht
zwingend. :wink:

Gruß,
Stefan

Wolfgang, nimm es bitte nicht persönlich, aber jetzt artet es in einen
Wettkampf aus "wer schreibt den längsten". Ich bin sicher, die ZEILE()
und SPALTE() können durch etwas noch aufwändigeres ersetzt werden.

Im Ernst: mit ZELLE("ADRESSE") bekomme ich den korrekten Bezug auf die
aktuelle Zelle und mit INDIREKT() murkse ich die Textausgabe wieder in
eine funktionierende Referenz um, die dann per Offset in VERSCHIEBUNG()
die darüberliegende Zelle anzeigt.

Gruß
Ben

<nachprüf>Stimmt; wusste ich gar nicht. </nachprüf>

Das ist aus der Hilfe so auch überhaupt nicht ersichtlich; da wird nur
eine Syntax *mit* dem Parameter 'Reference' aufgelistet. Und auch in der
Beschreibung zu "ADRESSE" werden nur Beispiele *mit* entsprechendem
Parameter angegeben.

Wolfgang

Hallo Wolfgang,

Folgendes funktioniert:
=ZELLE("ADRESSE")

Da fehlt noch ein Parameter, nämlich der Bezug; ich bevorzuge aber

Der zweite Parameter ist definitionsgemäß optional, also nicht
zwingend. :wink:

<nachprüf>Stimmt; wusste ich gar nicht. </nachprüf>

Das ist aus der Hilfe so auch überhaupt nicht ersichtlich; da wird nur
eine Syntax *mit* dem Parameter 'Reference' aufgelistet. Und auch in der
Beschreibung zu "ADRESSE" werden nur Beispiele *mit* entsprechendem
Parameter angegeben.

Wenn du hier

https://help.libreoffice.org/Calc/Information_Functions/de#ZELLE

ganz nach unten scollst, steht da eindeutig "(optional)", wenn man
mal davon absieht, dass die Hilfe für ein- und dasselbe Ding, mal
"Bezug" und mal "Referenz" schreibt. :wink:

Gruß,
Stefan

Hallo Stefan,

<snip> wenn man mal davon absieht, dass die Hilfe für ein- und dasselbe Ding, mal "Bezug" und mal "Referenz" schreibt.

Das ist ein Lokalisierungsproblem.

Kannst Du bitte eine genaue Beschreibung, wo was falsch bzw. unterschiedlich bezeichnet wird, auf der de-discuss-ML mit einem neuen und aussagekräftigen Betreff posten und dabei auf diesen Thread bzw. auf meine "Aufforderung" Bezug nehmen. Damit erstellt Du eine Art "ToDo" und kann in Ruhe angegangen werden.

Gruß

Jochen

Folgendes funktioniert:
=ZELLE("ADRESSE")

Da fehlt noch ein Parameter, nämlich der Bezug; ich bevorzuge aber

Der zweite Parameter ist definitionsgemäß optional, also nicht
zwingend. :wink:

<nachprüf>Stimmt; wusste ich gar nicht. </nachprüf>

Das ist aus der Hilfe so auch überhaupt nicht ersichtlich; da wird nur
eine Syntax *mit* dem Parameter 'Reference' aufgelistet. Und auch in der
Beschreibung zu "ADRESSE" werden nur Beispiele *mit* entsprechendem
Parameter angegeben.

Wenn du hier

https://help.libreoffice.org/Calc/Information_Functions/de#ZELLE

ganz nach unten scollst,

Wer bitte macht das?

steht da eindeutig "(optional)", wenn man
mal davon absieht, dass die Hilfe für ein- und dasselbe Ding, mal
"Bezug" und mal "Referenz" schreibt. :wink:

Bei ner AGB würde ich das eine 'überraschende Klausel' nennen ... :wink:

Wolfgang

Hi,

Wenn du hier

https://help.libreoffice.org/Calc/Information_Functions/de#ZELLE

ganz nach unten scollst,

Wer bitte macht das?

steht da eindeutig "(optional)", wenn man
mal davon absieht, dass die Hilfe für ein- und dasselbe Ding, mal
"Bezug" und mal "Referenz" schreibt. :wink:

Bei ner AGB würde ich das eine 'überraschende Klausel' nennen ... :wink:

Naja. Es entspricht konsequent der einheitlichen Struktur der Hilfe:

(1) Generelle Beschreibung der Funktion ZELLE

(2) Darstellung der Syntax mit den Parametern.

(3) Detaillierte Beschreibung der Parameter in der Reihenfolge, wie
sie in der Funktion vorkommen.

(4) Nachdem der Parameter, um den es hier geht, der letzte ist, muss
man halt auch ganz unten schauen, um die Informationen zu diesen
Parameter zu erhalten.

Insofern nicht überraschend, sondern erwartungsgemäß.

Es ließe sich eventuell verbessern, indem wir uns vielleicht von
anderen Softwareprodukten inspirieren lassen. Dort ist es üblich,
schon in der Darstellung der Syntax die zwingenden Parameter fett zu
drucken. Dann sieht man auf einen Blick, welches zwingende und
welches optionale Parameter sind.

Das könnte/sollte in der Hilfe und an allen Stellen in der GUI
einegeführt werden, also im Funktionsassistenten und auch bei der
Quickinfo, die bei der Eingabe einer Formel erscheint. Ich
befürchte, das wäre eine gar nicht so einfach durchzuführende
Programmänderung. Für den Nutzer wäre es aber eine große Hilfe.

Vielleicht hat jemand Zeit, Lust und die Fähigkeiten das Thema auf
englisch aufzubereiten und als Verbesserungsvorschlag in den
Bugtracker zu stellen und auf der Entwickler-Mailingliste zu promoten?

Gruß,
Stefan

Hallo Stefan

Es ließe sich eventuell verbessern, indem wir uns vielleicht von
anderen Softwareprodukten inspirieren lassen. Dort ist es üblich,
schon in der Darstellung der Syntax die zwingenden Parameter fett zu
drucken. Dann sieht man auf einen Blick, welches zwingende und
welches optionale Parameter sind.

Das könnte/sollte in der Hilfe und an allen Stellen in der GUI
einegeführt werden, also im Funktionsassistenten und auch bei der

Zumindest im Funktionsassistenten, ist das bereits so implementiert.

Werner

Hallo Werner,

Es ließe sich eventuell verbessern, indem wir uns vielleicht von
anderen Softwareprodukten inspirieren lassen. Dort ist es üblich,
schon in der Darstellung der Syntax die zwingenden Parameter fett zu
drucken. Dann sieht man auf einen Blick, welches zwingende und
welches optionale Parameter sind.

Das könnte/sollte in der Hilfe und an allen Stellen in der GUI
einegeführt werden, also im Funktionsassistenten und auch bei der

Zumindest im Funktionsassistenten, ist das bereits so implementiert.

In welcher Version / Plattform?

Bei mir mit LO 4.3.5.2 auf Ubuntu Linux nicht.

Gruß,
Stefan

Hallo Stefan

Hallo Werner,

Es ließe sich eventuell verbessern, indem wir uns vielleicht von
anderen Softwareprodukten inspirieren lassen. Dort ist es üblich,
schon in der Darstellung der Syntax die zwingenden Parameter fett zu
drucken. Dann sieht man auf einen Blick, welches zwingende und
welches optionale Parameter sind.

Das könnte/sollte in der Hilfe und an allen Stellen in der GUI
einegeführt werden, also im Funktionsassistenten und auch bei der

Zumindest im Funktionsassistenten, ist das bereits so implementiert.

In welcher Version / Plattform?

mit der Distroversion 4.2.7.2 von LinuxMint17.
mit den Deb-packages 4.3.5.2 von LO
mit Apache-Open-Office4.1
alle auf LinuxMint17 64-bit

mit LO 4.3.0 auf einer WindowsVM
meine Ubuntu-VM werf ich jetzt deshalb nicht an!

Bei mir mit LO 4.3.5.2 auf Ubuntu Linux nicht.

Dann kuck nochmal genau hin!

Werner

Hallo Werner,

Zumindest im Funktionsassistenten, ist das bereits so implementiert.

In welcher Version / Plattform?

mit der Distroversion 4.2.7.2 von LinuxMint17.
mit den Deb-packages 4.3.5.2 von LO
mit Apache-Open-Office4.1
alle auf LinuxMint17 64-bit

mit LO 4.3.0 auf einer WindowsVM
meine Ubuntu-VM werf ich jetzt deshalb nicht an!

Bei mir mit LO 4.3.5.2 auf Ubuntu Linux nicht.

Dann kuck nochmal genau hin!

Hilf mir mal kucken, bitte:

http://filmnetz.de/1.png
http://filmnetz.de/2.png

Gruß,
Stefan

Hallo Stefan

Hallo Werner,

Zumindest im Funktionsassistenten, ist das bereits so implementiert.

In welcher Version / Plattform?

mit der Distroversion 4.2.7.2 von LinuxMint17.
mit den Deb-packages 4.3.5.2 von LO
mit Apache-Open-Office4.1
alle auf LinuxMint17 64-bit

mit LO 4.3.0 auf einer WindowsVM
meine Ubuntu-VM werf ich jetzt deshalb nicht an!

Bei mir mit LO 4.3.5.2 auf Ubuntu Linux nicht.

Dann kuck nochmal genau hin!

Hilf mir mal kucken, bitte:

http://filmnetz.de/1.png

→Doppelklick auf ZELLE ...

Offenbar haben wir etwas aneinander vorbeigeredet, Du meintest die *Vor*-Ansicht ich meinte die *Detail*-Ansicht.

Werner

Wenn du hier

https://help.libreoffice.org/Calc/Information_Functions/de#ZELLE

ganz nach unten scollst,

Wer bitte macht das?

steht da eindeutig "(optional)", wenn man
mal davon absieht, dass die Hilfe für ein- und dasselbe Ding, mal
"Bezug" und mal "Referenz" schreibt. :wink:

Bei ner AGB würde ich das eine 'überraschende Klausel' nennen ... :wink:

Naja. Es entspricht konsequent der einheitlichen Struktur der Hilfe:

(1) Generelle Beschreibung der Funktion ZELLE

(2) Darstellung der Syntax mit den Parametern.

(3) Detaillierte Beschreibung der Parameter in der Reihenfolge, wie
sie in der Funktion vorkommen.

(4) Beispiele

(4) Nachdem der Parameter, um den es hier geht, der letzte ist, muss
man halt auch ganz unten schauen, um die Informationen zu diesen
Parameter zu erhalten.

Das wäre aber Punkt 5; nachdem jedoch bereits unter Punkt 3 Beispiele
gebracht werden (aka Punkt 3 mit Punkt 4 vermischt wird), und darin auch
irgendwie eine zumindest rudimentäre Erklärung für den 2. Parameter
vorhanden ist ...

Insofern nicht überraschend, sondern erwartungsgemäß.

Für mich schon ...

Wolfgang

Ben Dietze schrieb:

Wolfgang, nimm es bitte nicht persönlich, aber jetzt artet es in einen
Wettkampf aus "wer schreibt den längsten".

Du hast doch dazu aufgerufen... :wink:

Ich verstehe immer noch nicht, warum du nicht einfach in F8 mit dem Bezug F7 arbeitest. Das ist doch ein relativer Bezug. Wenn du diese Formel irgendwo anders hinkopierst [1], wird der Bezug angepasst!

Oder kopierst du, indem du den Text in der Eingabezeile markierst und dies kopierst? Dabei werden Bezüge nämlich nicht geändert!

Micha

[1] Zelle markieren, Strg+C, in neue Zelle klicken, Strg*V