Seite 1 von 1

ZEILE() als Variable in einer Formel möglich?

Verfasst: So, 10.10.2010 17:23
von klim
Hallo,

ich habe zwar gestern einen Beitrag diesbezüglich verfasst, aber leider im falschen Forum, nämlich im "writer" forum,
der link zum alten beitrag ist hier: viewtopic.php?f=1&t=42885

die antwort aus diesem beitrag hat mir aber leider auch nur bedingt geholfen.
ich habe mit dem hello world beispiel versucht meine für mich zu komplexe formel zu vereinfachen,
die antwort von "paljass" ist zwar gut und funktioniert, löst aber mein problem noch immer nicht.

meine formel sollte als gültigkeitsprüfung eines zellbereiches funktionieren und ohne wieder mit einem selbstgemachtes "hello word" beispiel zu erklären, hier die echte problemformel:

Code: Alles auswählen

WENN(("$Q"&(ZEILE()))=DDE("soffice";PfadBestand;"Kategorie");DDE("soffice";PfadBestand;"AnsichtAuswahl");""))
folgende formel mit fixen zellen funktioniert tadellos:

Code: Alles auswählen

WENN($Q24=DDE("soffice";PfadBestand;"Kategorie");DDE("soffice";PfadBestand;"AnsichtAuswahl");"")
bitte nochmal um hilfe

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: So, 10.10.2010 18:28
von balu
Hallo klim,

deine Formel Nr.1 kann nicht funktionieren, da Du zu viele Klammern drin hast. Und außerdem obendrein auch noch falsch geklammert ist. Wenn überhaupt, dann wäre sie von der Logik her wie folgt richtig. (aber noch immer nicht funktionstüchtig)

Code: Alles auswählen

WENN("$Q"&ZEILE()=DDE("soffice";PfadBestand;"Kategorie");DDE("soffice";PfadBestand;"AnsichtAuswahl");"")
paljass hatte dir doch schon die Lösung mitgeteilt.
paljass hat geschrieben: Deine Frage zur Dynamik kann ich aber mit Indirekt() beantworten:
=WENN(Indirekt("Q"&(ZEILE()))<>0;"Hello World";"")
Du musst das jetzt nur richtig umsetzen. Es ist doch eigentlich nicht zu übersehen was in deiner Formel Fehlt. Das Zauberwort ist 2 mal aufgeführt.



Gruß
balu

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: So, 10.10.2010 18:30
von Karolus
Hallo
Du hast ja bereits den Hinweis auf ...INDIREKT("$Q"&ZEILE())... bekommen.

Allerdings sehe ich noch nicht recht den Sinn dieses Indirekt-konstrukts im Kontext deiner Formel, reicht da eine normale Adressierung nicht aus?

Gruß Karo

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Mo, 11.10.2010 11:15
von klim
Ich habe schon so lange herumprobiert, sodass ich den Wald vor lauter Bäume nicht mehr gesehen habe.
So danke ich erstmal für die Infos und Vorschläge.

Meines erachtens müsste die Formel wie folgt funktionieren:

Code: Alles auswählen

WENN(INDIREKT("$Q"&ZEILE())=DDE("soffice";PfadBestand;"Kategorie");DDE("soffice";PfadBestand;"AnsichtAuswahl");"")
nach einem Test funktioniert diese auch richtig. Jetzt kommt leider das kleine Wörtchen aber eben leider nur als Zellformel.
Wenn die selbe Formel als Gültigkeitsformel für einen Zellbereich gilt, dann erscheint im Zellenauswahlfester Err:514
Gibt es vom Funktionsumfang bzw Einsatzbereich der Formeln einen Unterschied zwischen Zellformeln und Gültigkeitsformeln?

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Di, 12.10.2010 19:09
von klim
hat denn noch jemand einen rat für mich bitte?

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Di, 12.10.2010 23:44
von balu
Hallo klim,

es ist alles schwerer als Du denkst.

Das Du den Fehler bekommst kann ich bestätigen. Das liegt wohl aber daran, dass Calc bei Gültigkeit keine Indirekte Zelladressierung mag. Weder in der Form von INDIREKT("A"&ZEILE()), noch INDIREKT(ADRESSE(ZEILE();1)). Mit INDIREKT() läßt sich aber dennoch arbeiten, wenn Du z.B. in P9 einfach

Code: Alles auswählen

=ADRESSE(ZEILE();16)
eingibst, und in der Gültigkeit deine Formel wie folgt änderst.

Code: Alles auswählen

WENN(INDIREKT(P9)=DDE("soffice";PfadBestand;"Kategorie");DDE("soffice";PfadBestand;"AnsichtAuswahl");"")
Mehr kann ich dir momentan auch nicht anbieten, und ich weiss auch nicht ob das für dich eine akzeptable Lösung ist.


Gruß
balu

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Mi, 13.10.2010 09:50
von klim
Danke auch nochmal für deine Hilfe balu. Ich habe es ausprobiert, nun funktioniert zwar die Funktion Indirekt in einer Gültigkeitsformel, aber aufgrund der statischen Zellenangabe für die Adressberechnung drehe ich mich mit dem Problem im Kreis. Hat leider nicht geholfen. Hmm, ich dachte mir niemals bei Calc einmal an die Grenzen zu stoßen, aber anscheinend habe ich es geschafft. Ich belasse es nun dabei mit der indirekten Adressierung der Formel. Einziger Nachteil dabei ist, dass die Gültigkeitsformel pro Feld für Artikeleintrag eingegeben werden muss und von Zeile zu Zeile anders aussieht. Wenn die Indirekte Adressierung funktionieren würde, dann hätte ich eine Formel über alle Felder der Artikeleintragungen. Who-cares?
Danke all jenen die mir hier geholfen haben. Chris

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Mi, 13.10.2010 10:56
von balu
Hallo Chris,

ganz ehrlich gesagt, werd ich irgendwie aus deiner Schilderung nicht wirklich schlau.
Entweder versteh ich dich nicht richtig (kann durchaus vorkommen), oder Du drückst dich ungeschickt aus, oder Du gehst die Sache vielleicht verkehrt herum an. Oder ....

Am besten schnürst Du mal ein Beispielpaket (keine echten Daten und keine Personenbezogenen Daten) und hängst es hier an. Und an Hand dieser Dateien erklärst Du noch mal Step-by-Step dein angestrebtes Ziel. Denn wir bestimmen hier wann Schluß ist, und wann nicht :lol:.


Gruß
balu

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Do, 14.10.2010 01:08
von balu
Hallo Chris,

ich bin mir nicht sicher, deshalb frage ich jetzt doch mal nach.

Warum nimmst Du eigentlich nicht die ganz normale Zelladressierung vor? Ich wundere mich nur warum ich das nicht schon früher gefragt habe. Gar so wie Karo schon am Anfang.

Code: Alles auswählen

WENN(Q1=DDE("soffice";PfadBestand;"Kategorie");DDE("soffice";PfadBestand;"AnsichtAuswahl");"")
Bei mir hier unter WinXP mit OOo 3.2.1 kann ich dieses Formelprinzip so eingeben, und wenn ich dann die Zelle mit der Gültigkeit kopiere und wo anders einfüge, passt sich der Zellbezug (Q1) automatisch an.
Füge ich in der gleichen Spalte etwas tiefer ein, ändert sich die Zeilennummer. Und füge ich sie in einer anderen Zeile ein, dann ändert sich der Spaltenbuchstabe.

Wenn ich jetzt aber deine urspüngliche Formel nehmen würde, und auch an anderer Stelle einfüge, dann würde sich nur die Zeilennummer ändern. Der Spaltenname bliebe aber Konstant bei "Q", da Du ihn ja per INDIREKT vordiktierst.

Wie gesagt, ich spreche davon das die Formel unter Daten/Gültigkeit bei Zellbereich eingetragen ist. Kurz, sie verhällt sich dort genau so wie in einer normalen Zelle.
Hast Du vielleicht das Problem das sich die Zelladressierung bei Gükltigkeit von alleine von Relativ auf Absolut ändert? Wenn dem so wäre, dann stimmt etwas mit deinem OOo nicht.

Eine kleine Beispieldatei hab ich angehängt. Jedoch nicht mit DDE, sondern eine "einfachere" Variante.


Gruß
balu

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Do, 14.10.2010 10:03
von klim
balu hat geschrieben:Hallo Chris,

ich bin mir nicht sicher, deshalb frage ich jetzt doch mal nach.

Warum nimmst Du eigentlich nicht die ganz normale Zelladressierung vor? Ich wundere mich nur warum ich das nicht schon früher gefragt habe. Gar so wie Karo schon am Anfang.

Code: Alles auswählen

WENN(Q1=DDE("soffice";PfadBestand;"Kategorie");DDE("soffice";PfadBestand;"AnsichtAuswahl");"")
Bei mir hier unter WinXP mit OOo 3.2.1 kann ich dieses Formelprinzip so eingeben, und wenn ich dann die Zelle mit der Gültigkeit kopiere und wo anders einfüge, passt sich der Zellbezug (Q1) automatisch an.
Füge ich in der gleichen Spalte etwas tiefer ein, ändert sich die Zeilennummer. Und füge ich sie in einer anderen Zeile ein, dann ändert sich der Spaltenbuchstabe.

Wenn ich jetzt aber deine urspüngliche Formel nehmen würde, und auch an anderer Stelle einfüge, dann würde sich nur die Zeilennummer ändern. Der Spaltenname bliebe aber Konstant bei "Q", da Du ihn ja per INDIREKT vordiktierst.

Wie gesagt, ich spreche davon das die Formel unter Daten/Gültigkeit bei Zellbereich eingetragen ist. Kurz, sie verhällt sich dort genau so wie in einer normalen Zelle.
Hast Du vielleicht das Problem das sich die Zelladressierung bei Gükltigkeit von alleine von Relativ auf Absolut ändert? Wenn dem so wäre, dann stimmt etwas mit deinem OOo nicht.

Eine kleine Beispieldatei hab ich angehängt. Jedoch nicht mit DDE, sondern eine "einfachere" Variante.


Gruß
balu
Vielen Dank, warum ich die normale Adressierung und die Zeilen nicht einfach kopiert habe und sondern stattdessen die indirekte ist mir hinterher auch ein Rätsel. Man wird vor lauter Calc und endloslangen Formeln echt Betriebsblind. Es funktioniert auch jeden fall so wie du es nun geschildert hast. Mein Anfangsgedanke war warscheinlich, einen Zellbereich zu markieren und über den gesamten Bereich ein und die selbe Gültigkeitsformel zu setzen und irgendwie war ich von dieser Idee so versessen, sodass ich alle anderen Lösungen außer betracht gezogen habe. Vielen dank nochmal für die Erleuchtung. Ich hoffe mich wieder melden zu dürfen, sollte ich wieder mal Betriebsblind sein. Chris

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Do, 14.10.2010 10:14
von Karolus
Hallo
@Klim
Es ist auch manchmal nützlich das Geschreibsel der Antworter durchzulesen 8) - ich schrieb am Sonntag 10. Oktober 2010, 18:30 bereits:
Allerdings sehe ich noch nicht recht den Sinn dieses Indirekt-konstrukts im Kontext deiner Formel, reicht da eine normale Adressierung nicht aus?
Karo

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Do, 14.10.2010 10:50
von balu
Moin Chris,
Man wird vor lauter Calc und endloslangen Formeln echt Betriebsblind.
Willkommen im Club :D.
Das ergeht mir hin und wieder genau so. Und wenn mich dann irgendeiner unbewusst auf meine Blindheit hinweist, bin ich heilfroh das dann das Licht wieder in meine Augen scheint.

ein und die selbe Gültigkeitsformel zu setzen
Was hälst Du denn davon.
Wenn es sich um Formelelemente handelt die an anderen Stellen auch verwendet werden können, dann weise diesen einen Namen zu.
Beispiel:
DDE("soffice";PfadBestand;"Kategorie") => Name: DDEKAT
DDE("soffice";PfadBestand;"AnsichtAuswahl") => Name: DDEANSICHT
Jetzt kannst Du deine Ursprüngliche Formel auf das hier reduzieren.

Code: Alles auswählen

WENN(Q1=DDEKAT;DDEANSICHT;"")
Und an eventuell anderen Stellen reicht dann doch ganz einfach.

Code: Alles auswählen

DDEKAT
Man kann also nicht nur Bereichen einen Namen zuordnen, sondern auch Formeln. Und die kann man sogar verschachteln.
Beispiel:
WENN(Q1=DDEKAT;DDEANSICHT;"") => Name: DDEWAHL
Und so würde dann die Formel dann bei Gültigkeit nur noch so lauten.

Code: Alles auswählen

DDEWAHL
Das ist nur mal so ein kleiner Denkanstoß, vielleicht kannst Du ja etwas damit anfangen.

Ich hoffe mich wieder melden zu dürfen, sollte ich wieder mal Betriebsblind sein.
Ich wüsste nicht warum nicht. Spricht nichts dagegen :D.


@Karo
Was hilft das Lesen, wenn das Verstehen nicht dort ankommt wo es ankommen soll? Is mich doch och passiert. :?



Gruß
balu

Re: ZEILE() als Variable in einer Formel möglich?

Verfasst: Do, 14.10.2010 11:51
von klim
Vielen Dank für das Licht ins Dunkel.

Das man nicht nur Bereichen einen Namen zuordnen, sondern auch Formeln habe ich in deinem Beispiel gesehen. Das habe ich in deinem Bsp das erste mal gesehen und ich finde es eine sehr interessante Möglichkeit etwas zu Abstrahieren und sofern alles läuft "in Form" zu bringen.