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

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

klim
*
Beiträge: 10
Registriert: Do, 19.08.2010 12:47

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

Beitrag 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
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

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

Beitrag 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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

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

Beitrag 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
LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
klim
*
Beiträge: 10
Registriert: Do, 19.08.2010 12:47

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

Beitrag 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?
klim
*
Beiträge: 10
Registriert: Do, 19.08.2010 12:47

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

Beitrag von klim »

hat denn noch jemand einen rat für mich bitte?
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

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

Beitrag 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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
klim
*
Beiträge: 10
Registriert: Do, 19.08.2010 12:47

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

Beitrag 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
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

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

Beitrag 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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

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

Beitrag 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
Dateianhänge
Formel-Gültigkeit.ods
(11.9 KiB) 114-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
klim
*
Beiträge: 10
Registriert: Do, 19.08.2010 12:47

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

Beitrag 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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

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

Beitrag 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
LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

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

Beitrag 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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
klim
*
Beiträge: 10
Registriert: Do, 19.08.2010 12:47

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

Beitrag 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.
Antworten