Suchlauf

Hallo, wer weiß was?

Ich arbeite mit Mac OS X Version 10.4.8 und RagTime 6.0.1 (Build
1601) auf einem PowerPC G5 mit 1.8 GHz.

mit der folgenden Funktion wird das jeweilige Datum aus dem
"Erträgeblatt" in das "Datenblatt" übertragen:

VSuchlauf($A$20:$A$3700;LfdZelle<>'';0;VSuchlauf("Meine
Daten:Testdaten:… Erträge.rtt"!Rechenblatt S1R1!$A$1:CA
$3681;Spaltenwert(1)=LfdZelle(1);0;SetzeZelle(Wenn($CN
$16<>1;'';Spaltenwert(74+Spalte-92));CS20:CS3700;LfdIndex(1))))

Die Funktion steht im Datenblatt zum Beispiel in Zelle CS13. Das
diesbezügliche Datum steht im Rechenblatt S1R1 im Dokument Erträge in
der Zelle BV1. Das funktioniert wunderbar.

Nun möchte ich auf der Lage 2 im Datenblatt aus der Lage 2 im
Rechenblatt S1R1 im Dokument Erträge z.b. aus der Zelle [2]BV1 einen
Text in die Lage 2 des Datenblattes an analoger Stelle übernehmen.

CN16<>1 soll auf der Lage 1 bleiben.

Wie kann ich das erreichen?

Ich habe viel probiert, aber mein Ziel nicht erreicht.

Zum Beispiel:

VSuchlauf([1]$A$20:[1]$A$3700;LfdZelle<>'';0;VSuchlauf("Meine
Daten:Testdaten:… Erträge.rtt"!Rechenblatt S1R1![1]$A$1:CA
$3681;Spaltenwert(1)=LfdZelle(1);0;SetzeZelle(Wenn([1]$CN
$16<>1;'';Spaltenwert(74+Spalte-92));CS20:CS3700;LfdIndex(1))))

Aber das funktioniert nicht.

Mit freundlichen Grüßen
Norbert O

Re: Suchlauf

#5851 On 16 Januar, 2007 22:01 Tom Kaegi said,

Hallo Norbert

> Nun möchte ich auf der Lage 2 im Datenblatt aus der Lage 2 im
> Rechenblatt S1R1 im Dokument Erträge z.b. aus der Zelle [2]BV1
> einen Text in die Lage 2 des Datenblattes an analoger Stelle
> übernehmen.

> Ich habe viel probiert, aber mein Ziel nicht erreicht.
>
> Zum Beispiel:
>
> VSuchlauf([1]$A$20:[1]$A$3700;LfdZelle<>'';0;VSuchlauf("Meine
> Daten:Testdaten:… Erträge.rtt"!Rechenblatt S1R1![1]$A$1:CA
> $3681;Spaltenwert(1)=LfdZelle(1);0;SetzeZelle(Wenn([1]$CN
> $16<>1;'';Spaltenwert(74+Spalte-92));CS20:CS3700;LfdIndex(1))))

1. Ich verstehe nicht, weshalb du in der Formel ein Formular
(Dateinamen endet auf .rtt) referierst. Macht das Sinn? Welchen? Und
funktioniert das tatsächlich?

2. Statt "Spaltenwert(1)" schreibst du kürzer "LfdZelle". Das ist
genau das Gleiche.

3. Du sagst, dass du einen Text aus Lage 2 entnehmen willst. Aber du
holst den zu übertragenden Wert mit der Formel "Spaltenwert(74
+Spalte-92)". Die Funktion "Spaltenwert" bringt aber den Wert aus der
gleichen Lage, über die der Suchlauf läuft - also aus Lage 1 und
nicht aus Lage 2. Wenn du den Wert aus einer anderen Lage brauchst,
dann musst du ihn mit der Indexfunktion

Index(Bereich; ZeileInBereich; SpalteInBereich; LageInBereich)

holen. In diesem Fall also wohl (vorausgesetzt der Rest der Formel
stimmt):

Index("Meine Daten:Testdaten:… Erträge.rtt"!Rechenblatt S1R1![1]$A
$1:CA$3681;LfdIndex;74+Spalte-92;2)

oder einfacher, weil die Indexfunktion ja nur Werte aus Lage 2 holt
und sich der Bereich in der folgenden Formel (die in Lage 2 eines
Rechenblattes stehen muss, damit auch im aus Sicht der Formel fremden
Rechenblatt die Lage 2 adressiert wird) deshalb auf Lage 2 bezieht:

Index("Meine Daten:Testdaten:… Erträge.rtt"!Rechenblatt S1R1!$A$1:CA
$3681;LfdIndex;74+Spalte-92)

4. Den Sinn der Berechnung des Spaltenindex mit der Formel "74
+Spalte-92" sehe ich nicht ganz ein. Erstens lässt sich das ja nun
wirklich einfacher schreiben: "Spalte-18". Zweitens finde ich das
eine Art Geheimniskrämerei. Mit dieser Formulierung scheinst du
anzustreben, dass du die Formel nach rechts kopieren kannst und jede
solche Formel den Wert der nächsten Spalte überträgt. Dann würde ich
lieber schreiben "Spalte(X1)", wobei in der Klammer die (relative!)
Referenz zu einer Zelle (die 1 referiert natürlich die erste Zeile)
in der Spalte (X) steht, welcher du den Wert entnehmen willst. Die
Formel wird dabei (wegen der Referenz zum externen Rechenblatt) zwar
erheblich länger, aber trotzdem leichter interpretierbar.

Ich hoffe, dir damit geholfen zu haben!
Mit freundlichem Gruss
Thomas

Re: Suchlauf

#5852 On 16 Januar, 2007 22:11 Tom Kaegi said,

Hallo Norbert

Noch eine weitere Bemerkung:

> Die Funktion steht im Datenblatt zum Beispiel in Zelle CS13. Das
> diesbezügliche Datum steht im Rechenblatt S1R1 im Dokument Erträge
> in der Zelle BV1. Das funktioniert wunderbar.

Da scheint es sich (wegen des S1R1-Rechenblatt-Namens) um ein
Rechenblatt aus RT3-Zeiten zu handeln. Eine komplexe Formel ist viel
einfacher lesbar, wenn auch die Rechenblätter sinnvolle Namen tragen,
also gemäss den Empfehlungen in meinem Buch z.B. "R Erträge".

MfG
Thomas

Re: Suchlauf

#5853 On 17 Januar, 2007 08:50 "Norbert R. Obst" said,

Hallo Thomas,

vielen Dank für den Hinweis. Bei "Neuanlagen" verwende ich sinnvolle
Namen. Da aber meine älteren Formulare (aus ewigen Zeiten [RT3.2])
mit anderen Formularen verbunden sind, werden bei nachträglicher
Umbenennung der Rechenblätter die Bezüge nicht mehr hergestellt.

Mein Dank für Deine erste Antwort kommt später, wenn ich den Inhalt
verarbeitet habe und alles funktioniert.

Mit freundlichen Grüßen
Norbert O

Am 16.01.2007 um 22:11 schrieb Tom Kaegi:

> Hallo Norbert
>
> Noch eine weitere Bemerkung:
>
>> Die Funktion steht im Datenblatt zum Beispiel in Zelle CS13. Das
>> diesbezügliche Datum steht im Rechenblatt S1R1 im Dokument Erträge
>> in der Zelle BV1. Das funktioniert wunderbar.
>
> Da scheint es sich (wegen des S1R1-Rechenblatt-Namens) um ein
> Rechenblatt aus RT3-Zeiten zu handeln. Eine komplexe Formel ist
> viel einfacher lesbar, wenn auch die Rechenblätter sinnvolle Namen
> tragen, also gemäss den Empfehlungen in meinem Buch z.B. "R Erträge".
>
> MfG
> Thomas