Suchlauf findet nicht alles

Hallo Liste,

warum funktioniert die folgende Formel nicht korrekt ?

Knopf('effacer';Suchlauf(FC2!$B$2:$U$23;LfdZelle<>4;;SetzeZelle(4;FC2!$B$2:$U$23;LfdIndex)))

Die Formel funktionniert nur in einigen Zellen, ungefähr eine auf zwei

Grüsse,
jacques

MacOS 10.7.5
RT 6.5.2

Re: Suchlauf findet nicht alles

#10997 On 9 Februar, 2013 18:12 Jürgen Schell said,

Ich nehme an, Du läufst in das Problem, dass die Index-Reihenfolgen in Suchlauf und SetzeZelle nicht gleich sind.

Ich hatte das vor ein paar Tagen in meiner eigenen Suchlauf-Einführung ergänzt:

http://www.j-schell.de/node/63#spalten_kopieren

letzter Absatz und das folgende »Bereiche kopieren«.

Gruß,

Jürgen

www.j-schell.de

Re: Suchlauf findet nicht alles

#10998 On 9 Februar, 2013 19:10 Thomas Kaegi said,

Hallo Jacques

Ich überlasse es ungern RagTime, zu entscheiden, wie ein Bereich genau abgesucht wird, und ziehe es deshalb vor, den Bereich mit einem verschachtelten Suchlauf zu bearbeiten.

Ändere deine Formel zu:

Knopf('effacer';VSuchlauf(FC2!$B$2:$B$23;1;;
HSuchlauf(FC2!$B$2:$U$2;Index(FC2!$B$2:$U$23;LfdIndex(1);LfdIndex)<>4;;
SetzeZelle(4;FC2!$B$2:$U$23;LfdIndex(1);LfdIndex)))

NB: Die beiden Zeilenumbrüche in der Formel sind nur zwecks besserer Lesbarkeit der Formel im Forum eingefügt.

Der äussere VSuchlauf bearbeitet bedingungslos die Zeilen 2 bis 23. Jede dieser "Bearbeitungen" umfasst den horizontalen Suchlauf über die betreffende Zeile, in welchem nun nicht mehr einfach die "LfdZelle" untersucht werden kann. Die Abfrage muss mit der Indexfunktion erfolgen, in welcher für die Adressierung von Spalte und Zeile die beiden laufenden Indizes des äusseren und inneren Suchlaufs verwendet werden. Die gleiche Adressierung ist auch beim SetzeZelle-Befehl verwendet.

Die beiden Suchläufe müssen nur über eine Spalte, bzw. eine Zeile laufen. Die Adressierung des ganzen Bereichs erfolgt mit der Index, bzw. der SetzeZelle-Funktion.

Freundlicher Gruss, Thomas

Re: Suchlauf findet nicht alles

#10999 On 9 Februar, 2013 19:18 Thomas Kaegi said,

Hallo Jacques

Noch eine Zusatzbemerkung zu meinem vorherigen Beitrag:

So wie die Formel jetzt dasteht, kannst du auf die Bedingung im horizontalen Suchlauf, also die Indexfunktion und den Vergleich mit dem Wert 4, verzichten und sie durch eine "1" ersetzen. Die Formel macht ja nichts anderes, als den Inhalt aller Zellen, die nicht den Wert "4" enthalten, auf "4" zu setzen. Am Schluss enthalten somit sämtliche Zellen des Bereichs den Wert "4", egal was vorher drin stand. Also:

Knopf('effacer';VSuchlauf(FC2!$B$2:$B$23;1;;
HSuchlauf(FC2!$B$2:$U$2;1;;SetzeZelle(4;FC2!$B$2:$U$23;LfdIndex(1);LfdIndex)))

Gruss, Thomas

Re: Suchlauf findet nicht alles

#11000 On 9 Februar, 2013 19:42 jacques villars said,

Vielendank Jürgen und Thomas für die Erklärungen.

Mit deiner Formel Thomas klappt es… mit einer Klammer mehr am Ende ;-)

Grüsse,
jacques

Re: Suchlauf findet nicht alles

#11001 On 11 Februar, 2013 18:44 jacques villars said,

Hallo Jürgen und Thomas,
Nun, da ich verstanden habe, warum meine erste Formel nicht einwandfrei funktionierte, habe ich eine sehr einfache Lösung angewendet :

Knopf('initialiser';Suchlauf(FC2!$B$2:$U$23;1;;SetzeZelle(4;FC2!$B$2:$U$23;LfdIndex)))

Mit 1=Wahr als Bedingung (statt etwas mit LfdZelle) gibt es kein Problem mehr, egal, der Bereich mehr Spalten als Linien oder umgekehrt hat.

Grüsse,
jacques